蓝桥杯cc省赛试题及答案解析
蓝桥杯第七届cc初赛试题及答案
蓝桥杯第七届cc初赛试题及答案蓝桥杯第七届CC初赛试题及答案1. 选择题1.1 以下哪个选项是C语言中定义数组的正确方式?A) int array[10];B) int array[];C) int [10] array;D) int array=10;答案:A1.2 以下哪个关键字用于定义一个结构体?A) structB) unionC) enumD) typedef答案:A1.3 在C语言中,哪个运算符用于取地址?A) *B) &C) %D) #答案:B2. 填空题2.1 在C语言中,关键字________用于定义一个函数。
答案:void2.2 如果一个变量的值是10,那么表达式sizeof(&variable)的结果是________。
答案:4(或根据系统不同,可能是8)2.3 在C语言中,________运算符用于定义一个指针。
答案:*3. 编程题3.1 编写一个C语言程序,计算并输出100以内所有偶数的和。
答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}```3.2 编写一个C语言程序,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int len = strlen(str);for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```4. 简答题4.1 请解释C语言中指针和引用的区别。
第十一届蓝桥杯真题及答案
第十一届蓝桥杯C++省赛B组真题和题解试题A:门牌制作题目【问题描述】小蓝要为一条街的住户制作门牌号。
这条街一共有2020位住户,门牌号从1到2020编号。
小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。
请问要制作所有的1到2020号门牌,总共需要多少个字符2?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解答案:624#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <queue>#include <stack>#include <set>#include <cmath>#include <iostream>using namespace std;const int INF = 1e9;int cnt;void cal(int x){while(x){if(x % 10 == 2) cnt++;x /= 10;}}int main(){for(int i = 1; i <= 2020; i++){ cal(i);}cout << cnt;return 0;}试题B:既约分数题目【问题描述】如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。
例如,3/4,5/2,1/8,7/1都是既约分数。
请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括1和2020)?【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
蓝桥杯第九届cc组试题及答案
蓝桥杯第九届cc组试题及答案蓝桥杯第九届CC组试题及答案一、选择题(每题5分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是正确的C语言函数声明?A. int function(int x);B. int function(int);C. int function(int x, int y);D. int function(x, int y);答案:A3. 在C语言中,以下哪个选项是合法的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!" "Another string"D. "Hello, World!" Another string答案:A4. 在C语言中,以下哪个选项是合法的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2};D. int arr[] = {1, 2, 3, 4};答案:A二、填空题(每题5分,共20分)1. 在C语言中,使用________关键字可以定义一个指针变量。
答案:int*2. C语言中,________运算符用于计算两个整数的和。
答案:+3. 在C语言中,________函数用于将字符串复制到另一个字符串。
答案:strcpy4. C语言中,________关键字用于定义一个静态局部变量。
答案:static三、编程题(每题10分,共20分)1. 编写一个C语言函数,计算并返回两个整数的和。
答案:```cint add(int a, int b) {return a + b;}```2. 编写一个C语言程序,读取一个字符串,并打印出它的逆序。
蓝桥杯cc省赛试题及答案解析
if(index == 9)
{
Solve();
return ;
}
for(int i = 1 ; i<10 ; i ++)
if(!visit[i])
{
visit[i] = true; num[index] = i; dfs(index+1);
visit[i] = false;
}
}
}
int mห้องสมุดไป่ตู้in()
#include<> int main()
int start,end;
for(start = 1 ; start<236 ; start ++)
{
for( end = start ; end<236 ; end ++ )
{
int sum = 0;
for(int i = start; i<=end; i ++)
2016
第一题
煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数, 不要填写任何多余的内容或说明性文字
答案:171700
{
dfs(0);
printf("%d\n",ans);
return 0;
第四题
快速排序
排序在各种场合经常被用到。
快速排序是十分常用的高效率的算法。
其思想是:先选一个“标尺”,
2024十五届蓝桥省赛C++真题(附解析)
2024年第十五届蓝桥省赛中级组C++真题(附解析)一、选择题(选择题严禁使用程序验证,选择题不答或答错都不扣分)1、定义 char a[]="hello\nworld",执行 cout<<a,输出结果是( )A、helloworldB、 helloworldC、hellonworldD、hello\nworld解析:\n输出时会换行2、(11001010)2+(F8)16的结果是( )。
A、(11001010)2B、(701)8 C、(1C2)16 D、(452)10解析:(11001010)2值为202 (F8)16值为248 和为450,转为16进制为C、(1C2)163、表达式4%12 的结果是( )。
A、0B、4C、3 D、12解析:4%12 ,为求4除以12的余数,结果为44、下列选项中,逻辑表达式的值始终与 B的真假无关的是( )。
A、(!A || B) && AB、(A || B) && (!A && B)C、(A && !A)||BD、(A || B) && (A || !B)解析:D,如果A为真,该语句一定为真,如果A为假,不管B的值是否为真,该语句的值都为假,所以与B的真假无关5、运行下面程序,输出结果是()。
1.int a[6] = {16, 8, 32, 10, 9, 21};2.int func(int L, int R, int d) {3.if (L > R)4.return 0;5.int sum = 0, m = a[L], index = L;6.for (int i = L + 1; i <= R; i++) {7.if (m < a[i]) {8. m = a[i];9. index = i;10. }11. }12.int lt = func(L, index - 1, d + 1);13.int rt = func(index + 1, R, d + 1);14.return lt + rt + d * m;15.}16.int main() {17. cout << func(0, 5, 1);18.return 0;19.}A、196B、197C、198D、199解析:A ,当func 函数被调用时,它首先检查L 是否大于R,这是递归的基本情况。
第三届全国软件大赛决赛C本科真题与答案详析
第三届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛C/C++程序设计本科组比赛选手须知:●比赛时间为4小时(9:00-13:00)。
●参赛选手切勿在提交的代码中书写“XX”、“考号”,“院校名”等身份信息或其它与竞赛题目无关的内容,否则成绩无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”,总计100分。
结果填空:5分代码填空:16分程序设计:19+27+33= 79分结果填空题:要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案存入【XX+XX文件夹】下对应题号的“解答.txt”中即可。
代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)存入【XX+XX文件夹】下对应题号的“解答.txt”中即可。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
选手的程序只有能运行出正确结果的时候才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对每个编程题目,要求选手把所有函数写在一个文件中。
调试好后,存入与【XX+XX 文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。
例如,不能使用CString类型(属于MFC类库)。
1.结果填空(满分5分)题目在【XX+XX文件夹】下对应题号的“题目.rar”中,请先解压该文件。
解压密码以考场公布为准。
把答案存入【XX+XX文件夹】下对应题号的“解答.txt”中即可。
第七届蓝桥杯省赛a组试题及答案
第七届蓝桥杯省赛a组试题及答案第七届蓝桥杯省赛A组试题及答案1. 选择题- 1.1 以下哪个选项是Java中的数据类型?A. BooleanB. StringC. IntegerD. All of the above- 答案:D- 1.2 在C++中,用于定义一个类的方法是什么关键字?A. classB. structC. functionD. method- 答案:A2. 填空题- 2.1 在Python中,用于定义函数的关键字是____。
- 答案:def- 2.2 在JavaScript中,用于声明变量的关键字是____。
- 答案:var3. 编程题- 3.1 编写一个函数,计算并返回从1到n的整数之和。
- 答案:```pythondef sum_n(n):return sum(range(1, n+1))```- 3.2 编写一个程序,实现一个简单的计算器,可以进行加、减、乘、除操作。
- 答案:```pythondef calculator(a, b, operation):if operation == '+':return a + belif operation == '-':return a - belif operation == '*':return a * belif operation == '/':return a / b if b != 0 else 'Error: Division by zero'```4. 简答题- 4.1 解释什么是面向对象编程(OOP)?- 答案:面向对象编程(OOP)是一种编程范式,它使用“对象”来设计应用程序和程序。
对象是现实世界中事物的抽象,它们具有属性(数据)和方法(功能)。
- 4.2 描述一下什么是递归函数?- 答案:递归函数是一个调用自身的函数,它允许函数在执行过程中调用自己。
第七届蓝桥杯省赛c语言试题及答案
第七届蓝桥杯省赛c语言试题及答案第七届蓝桥杯省赛C语言试题及答案1. 题目一:计算圆的面积要求:编写一个程序,输入圆的半径,计算并输出圆的面积。
答案:```c#include <stdio.h>#define PI 3.14159int main() {float radius, area;printf("请输入圆的半径: ");scanf("%f", &radius);area = PI * radius * radius;printf("圆的面积是: %.2f\n", area);return 0;}```2. 题目二:字符串反转要求:编写一个函数,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int i, j;char temp;for(i = 0, j = strlen(str) - 1; i < j; i++, j--) {temp = str[i];str[i] = str[j];str[j] = temp;}}int main() {char str[100];printf("请输入一个字符串: ");scanf("%s", str);reverseString(str);printf("反转后的字符串是: %s\n", str);return 0;}```3. 题目三:寻找最大值要求:编写一个程序,输入10个整数,找出并输出其中的最大值。
答案:```c#include <stdio.h>int main() {int numbers[10], max;printf("请输入10个整数:\n");for(int i = 0; i < 10; i++) {scanf("%d", &numbers[i]);}max = numbers[0];for(int i = 1; i < 10; i++) {if(numbers[i] > max) {max = numbers[i];}}printf("最大值是: %d\n", max);return 0;}```4. 题目四:计算阶乘要求:编写一个函数,计算并返回一个整数的阶乘。
第八届蓝桥杯c组试题及答案
第八届蓝桥杯c组试题及答案第八届蓝桥杯C组试题及答案1. 单项选择题1.1 以下哪个选项是C语言中声明一个整型数组的正确方式?A. int array[10];B. int [10] array;C. int array[];D. int array=10;1.2 正确答案是 A。
2. 程序填空题2.1 请在以下程序中填入缺失的代码,以实现计算并输出1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 1) {sum += i;}}printf("Sum of odd numbers: %d\n", sum);return 0;}```2.2 缺失的代码是 `if (i % 2 == 1) {`。
3. 程序改错题3.1 以下程序旨在计算并输出1到100之间所有偶数的和,但存在错误,请找出并修正错误。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers: %d\n", sum);return 0;}```3.2 错误在于程序的目的是计算奇数的和,但代码计算的是偶数的和。
要修正这个问题,需要将 `if (i % 2 == 0)` 更改为 `if (i % 2 != 0)`。
4. 编程题4.1 编写一个程序,实现以下功能:从用户输入一个整数n,然后输出n的阶乘。
```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}int main() {int n;printf("Enter a number: ");scanf("%d", &n);printf("Factorial of %d is %lld\n", n,factorial(n));return 0;}```4.2 以上程序正确实现了题目要求的功能。
第十二届蓝桥杯大赛软件赛省赛第二场CC++大学A组题解
第⼗⼆届蓝桥杯⼤赛软件赛省赛第⼆场CC++⼤学A组题解A. 双阶乘输出2021!! \bmod 10^4for 循环每次减2即可B. 格点求第⼀象限整点中,xy\leq 2021的整点个数for 循环暴⼒遍历2021\times 2021的平⾯,统计答案即可C. 整数分解求2021分解为5个正整数的有序分解⽅案数令f_{n, p}表⽰n被分解为p个正整数的有序分解⽅案数搜索或递推均可D. 城邦给定编号为1~2021的2021元完全图,定义点权为编号数码的集合的元素和(例如 : 2021的为2+0+1=3)。
定义连接两点a, b的边权为两点点权之和求 MST 边权和先暴⼒把1~2021的点权跑出来,然后所有边已知由于是提交答案题,跑 Kruskal 或者 Prim 算法均可E. 游戏给定数值n,两⼈轮流进⾏游戏。
每⼀轮可将数字n化为其因数之⼀,直到n变为1问n=20210509时的游戏⽅案数令f_d表⽰从d开始,游戏的⽅案数,初始f_1=1⽤刷表法,将d的所有倍数n,均执⾏f_n+=f_d复杂度为\displaystyle \sum_{i=1}^n \lfloor{n\over i}\rfloor\approx \sum_{i=1}^n {n\over i}=O(n\log n)期望时长为5sF. ⼩平⽅求[1,n)\cap Z中,模n意义下,平⽅严格⼩于{n\over 2}的数的个数n\leq 10^4for 循环暴⼒验证即可G. 完全平⽅数给定正整数n,求最⼩的正整数x,使得nx为完全平⽅数n\leq 10^{12}考虑到n⼤于\sqrt n的质因数最多1个否则任意两个乘起来也超过n因此优先⽤欧拉筛或埃⽒筛打出\sqrt n\leq 10^6范围内的质因数,将该部分的每个质数在n中的次数求出若次数为奇数,则x中必须出现奇数次该质数,故取1次;否则x中需为偶数次,取0次最后验证n是否仍有其他质因数,若有,则x中该质因数必须出现奇数次,同样取1次H. 负载均衡n台计算机,第i台算⼒为v_im个任务,每个在a_i时刻送达,需要消耗b_i号计算机c_i的时间与d_i的算⼒若分配任务时,计算机算⼒充⾜,必须执⾏任务,并输出剩余算⼒;否则输出-1n, m\leq 2\times 10^5考虑将任务拆成两瓣:1. a_i时到达的,消耗b_i号计算机d_i算⼒的2. a_i+c_i时到达的,消耗b_i号计算机-d_i算⼒的且第⼆个⼦任务奏效当且仅当第⼀个⼦任务奏效因此,对任务标记原来的序号i,再按时间排序;时间相同时,算⼒为负数的任务(第⼆类任务)优先维护每台计算机的剩余算⼒,按时间顺序执⾏任务当执⾏第⼀类任务时,检查算⼒是否充⾜,充⾜则执⾏当前任务,更新剩余算⼒并输出;若不充⾜,则标记当前任务原来序号i不⽣效,并且输出-1当执⾏第⼆类任务时,检查当前任务是否⽣效,若不⽣效则直接退出;否则更新算⼒复杂度为O(n\log n)I. 国际象棋规定国际象棋棋盘中,位于点(x,y)的马可以攻击8个⽅向:1. (x-2, y-1)2. (x-2, y+1)3. (x-1, y-2)4. (x-1, y+2)5. (x+1, y-2)6. (x+1, y+2)7. (x+2, y-1)8. (x+2, y+1)求n\times m的棋盘中,放置k匹马且不互相攻击的⽅案数n\leq 6, m\leq 100, k\leq 20状压 dp :预处理n_{1, S}表⽰当前⾏状态状态为S时,下⼀⾏的最⼤可选集合;n_{2, S}表⽰下两⾏最⼤可选集合;cnt_S表⽰|S|记f_{m, S, T, k}表⽰第m⾏状态为S且第(m-1)⾏状态为T时,放置了k匹马且不互相攻击的⽅案数不难得出,当且仅当S\subseteq n_{1, T}时⽅程有意义,且初始状态为f_{1, S, 0, cnt_S}=1状态转移采⽤刷表实现:将f_{m, S, T, k}刷到\forall R\subseteq (n_{1, S}\cap n_{2, T}),f_{m+1, R, S, k+|R|}答案为\displaystyle \sum_S\sum_T f_{m, S, T, k}发现第⼀维可以滚动成m\bmod 2形式,故空间复杂度为2\times 2^n\times 2^n\times k=O(k\cdot 4^n)时间复杂度为m\times 2^n\times 2^n\times k+2^n\times 2^n=O(mk\cdot 4^n),显然充⾜甚⾄加上了S\subseteq n_{1, T}的限制,根本拉不到那么⼤J. 完美序列这题题⽬是真的绕定义完美序列为:满⾜除第1个数外,所有数为前⼀个数的因数的序列。
2019第十届蓝桥杯省赛CC++大学B组试题+题解
2019第⼗届蓝桥杯省赛CC++⼤学B组试题+题解第⼗届蓝桥杯省赛C/C++⼤学B组试题+题解第⼗届蓝桥杯⼤赛软件类省赛C/C++ ⼤学 B 组考⽣须知考试开始后,选⼿⾸先下载题⽬,并使⽤考场现场公布的解压密码解压试 题。
考试时间为 4 ⼩时。
考试期间选⼿可浏览⾃⼰已经提交的答案,被浏览的 答案允许拷贝。
时间截⽌后,将⽆法继续提交或浏览答案。
对同⼀题⽬,选⼿可多次提交答案,以最后⼀次提交的答案为准。
选⼿必须通过浏览器⽅式提交⾃⼰的答案。
选⼿在其它位置的作答或其它 ⽅式提交的答案⽆效。
试题包含“结果填空”和“程序设计”两种题型。
结果填空题:要求选⼿根据题⽬描述直接填写结果。
求解⽅式不限。
不要 求源代码。
把结果填空的答案直接通过⽹页提交即可,不要书写多余的内容。
程序设计题:要求选⼿设计的程序对于给定的输⼊能给出正确的输出结果。
考⽣的程序只有能运⾏出正确结果才有机会得分。
注意:在评卷时使⽤的输⼊数据与试卷中给出的⽰例数据可能是不同的。
选⼿的程序必须是通⽤的,不能只对试卷中给定的数据有效。
对于编程题⽬,要求选⼿给出的解答完全符合 GNU C/C++ 标准,不能使 ⽤诸如绘图、Win32API、中断调⽤、硬件操作或与操作系统相关的 API。
代码中允许使⽤ STL 类库。
注意: main 函数结束必须返回 0注意: 所有依赖的函数必须明确地在源⽂件中 #include ,不能通过 ⼯程设置⽽省略常⽤头⽂件。
所有源码必须在同⼀⽂件中。
调试通过后,拷贝提交。
提交时,注意选择所期望的编译器类型。
试题 A: 组队本题总分:5 分作为篮球队教练,你需要从以下名单中选出 1 号位⾄ 5 号位各⼀名球员, 组成球队的⾸发阵容。
每位球员担任 1 号位⾄ 5 号位时的评分如下表所⽰。
请你计算⾸发阵容 1 号位⾄ 5 号位的评分之和最⼤可能是多少?【答案提交】这是⼀道结果填空的题,你只需要算出结果后提交即可。
本题的结果为⼀ 个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。
第五届蓝桥杯程序设计大赛省赛题目及答案
第五届省赛1.一个串的子串是指该串的一个连续的局部。
如果不要求连续,则可称为它的子序列。
比如对串: "abcdefg" 而言,"ab","abd","bdef" 等都是它的子序列。
特别地,一个串本身,以及空串也是它的子序列。
对两个串而言,可以有许多的共同的子序列,我们关心的是:它们所共同拥有的长度最大的子序列是多长。
以下代码实现了这个问题的求解。
请填写划线部分缺失的代码。
注意:只填写划线部分缺少的内容,不要填写任何多余的符号或注释、说明等。
例如,不要填写已经给出的小括号。
inline max(int a, int b){return a>b?a:b;}int f(char* x, char* y){if(strlen(x)==0) return 0;if(strlen(y)==0) return 0;if(*x == *y) return f(x+1, y+1) + 1;return max( ______________________ );//处理字符串}int main(){printf("%d\n", f("ac","abcd")); //2printf("%d\n", f("acebbcde1133","xya33bc11de")); //5return 0;}f(x+1,y),f(x,y+1)2.历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:pai = 4*(1-1/3+1/5-1/7 ....)参见【图1.png】这个公式简单而优美,但美中不足,它收敛的太慢了。
如果我们四舍五入保留它的两位小数,那么:累积了1项和是:4.00累积了2项和是:2.67累积了3项和是:3.47。
第三届蓝桥杯——蓝桥杯c语言本科组(带答案)
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
3.
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
#include <cstdio>
int main()
{
long int X=10, Y=90;
for(int k=1; k<=120; k++)//半分钟一个单位
{
if(k%2==1) Y -= X;//因为X出生半分钟后就要吃Y,尔后没1分钟要吃Y,所以永远都是奇数个半分钟的时候吃Y,又因为此时X不会增长(题目为了减小讨论的复杂度),所以直接减X数量即可。
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank)
{
int* y = (int*)malloc(___________________); //填空
for(int i=0; i<rank * rank; i++)
{
GoNext(x,r,c);
return;
}
int rr = GetRowStoneNum(x,r);
int cc = GetColStoneNum(x,c);
if(cc>=3) //本列已满
《蓝桥杯省赛真题解析》2021年第十二届结果填空题《直线》
《蓝桥杯省赛真题解析》2021年第⼗⼆届结果填空题《直线》题⽬⼤意本题为填空题,只需要算出结果后,在代码中使⽤输出语句将所填结果输出即可。
在平⾯直⾓坐标系中,两点可以确定⼀条直线。
给定平⾯上 20×21 个整点 {(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z},即横 坐标是 0 到 19 (包含 0 和 19) 之间的整数、纵坐标是 0 到 2020 (包含 0 和 20) 之 间的整数的点。
请问这些点⼀共确定了多少条不同的直线。
解题思路在平⾯直⾓坐标系中,俩点可以确定⼀条直线,那俩点有四个坐标值,我们不太好维护四个坐标值是否重复。
我们知道直线的表⽰⽅式中,除了俩点式,还有点斜式,点斜式的话, ⼀个点俩个坐标值和⼀个斜率值,三个值来确定唯⼀性,虽然不太好写但是还是勉强能跑出来。
更进⼀步,如果那个点是在 x 轴或者 y轴上,那么⼀个坐标就恒定为 0, 只要维护另⼀个坐标值(其实就是截距啦)和斜率就好了,简单 map 维护⼀下,注意枚举的斜率不存在的情况呢。
最终答案:40257。
参考代码(Python):# ⽅法⼀: '超过时间限制'class Line(object):def__init__(self):self.k =0self.b =0def__lt__(self, t):if self.k != t.k:# 当两条直线斜率不等时return self.k < t.k # 斜率⼩的排前⾯(排序)return self.b < t.b # 斜率相等时,截距⼩的排前⾯N =200000n =0l =[Line()for _ in range(N)]for x1 in range(0,20):for y1 in range(0,21):for x2 in range(0,20):for y2 in range(0,21):if x1 != x2:k =float((y2 - y1))/(x2 - x1)b =float(y2 - k * x2)l[n].k = kl[n].b = bn +=1L = l[0: n]# 切⽚L.sort()# 排序(耗时),排好序再⽐较斜率和截距不会出错。
第五届蓝桥杯省赛b组试题及答案
第五届蓝桥杯省赛b组试题及答案第五届蓝桥杯省赛B组试题及答案一、选择题(每题5分,共20分)1. 下列哪个选项是Python语言中用于定义函数的关键字?A. defB. functionC. funcD. declare答案:A2. 在HTML中,用于定义最重要的标题的标签是?A. <h1>B. <title>C. <header>D. <h6>答案:A3. 在JavaScript中,以下哪个方法用于获取数组中最后一个元素?A. last()B. first()C. pop()D. lastElement()答案:C4. 在CSS中,以下哪个属性用于设置元素的背景颜色?A. background-colorB. bg-colorC. colorD. back-color答案:A二、填空题(每题5分,共20分)1. 在Python中,用于执行条件判断的关键字是________。
答案:if2. 在HTML中,用于创建无序列表的标签是________。
答案:<ul>3. 在JavaScript中,用于获取当前日期的函数是________。
答案:new Date()4. 在CSS中,用于设置文本颜色的属性是________。
答案:color三、简答题(每题10分,共20分)1. 请解释什么是闭包,并给出一个简单的JavaScript闭包示例。
答案:闭包是一个函数和其周围的状态(词法环境)的组合。
闭包允许函数访问其定义时的作用域链,即使在其定义的作用域外执行。
示例:```javascriptfunction createClosure() {var secret = "I'm a secret";return function() {console.log(secret);};}var myClosure = createClosure();myClosure(); // 输出:I'm a secret```2. 请简述HTML5和HTML4的主要区别。
第七届蓝桥杯省赛c组试题及答案
第七届蓝桥杯省赛c组试题及答案第七届蓝桥杯省赛C组试题及答案1. 题目一:计算圆周率要求:编写一个程序,使用蒙特卡洛方法计算圆周率π的近似值。
解答:```pythonimport randomdef calculate_pi(num_samples):inside_circle = 0for _ in range(num_samples):x, y = random.random(), random.random()if x*x + y*y <= 1:inside_circle += 1return 4 * inside_circle / num_samplesprint(calculate_pi(1000000))```2. 题目二:字符串反转要求:编写一个函数,实现字符串反转的功能。
解答:```pythondef reverse_string(s):return s[::-1]print(reverse_string("hello"))```3. 题目三:寻找最大子数组和要求:给定一个整数数组,请找出其最大子数组和。
解答:```pythondef max_subarray_sum(nums):max_sum = nums[0]current_sum = nums[0]for num in nums[1:]:current_sum = max(num, current_sum + num)max_sum = max(max_sum, current_sum)return max_sumprint(max_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4])) ```4. 题目四:判断回文链表要求:给定一个链表,判断其是否为回文结构。
解答:```pythonclass ListNode:def __init__(self, value=0, next=None):self.val = valueself.next = nextdef is_palindrome(head):fast = slow = headprev = Nonewhile fast and fast.next:fast = fast.next.nextnext_node = slow.nextslow.next = prevprev = slowslow = next_nodeif fast:slow = slow.nextleft = headright = prevwhile left and right:if left.val != right.val: return Falseleft = left.nextright = right.nextreturn True# 示例链表构建和调用node1 = ListNode(1)node2 = ListNode(2)node3 = ListNode(2)node4 = ListNode(1)node1.next = node2node2.next = node3node3.next = node4print(is_palindrome(node1))```5. 题目五:二叉树的镜像要求:请完成一个函数,实现二叉树的镜像。
2016第七届蓝桥杯大赛CC 大学C组省赛真题详解
}
}
int main()
{
int i;
int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
int N = 12;
quicksort(a, 0, N-1);
for(i=0; i<N; i++) printf("%d ", a[i]);
第七届蓝桥杯大赛个人赛省赛(软件类)
C/C++大学C组
一、
试题
1、报纸页数
X星球日报和我们地球的城市早报是一样的,
都是一些单独的纸张叠在一起而已。每张纸印有4版。
比如,某张报纸包含的4页是:5,6,11,12,
可以确定它应该是最上边的第2张报纸。
我们在太空中捡到了一张X星球的报纸,4个页码分别是:
1125,1126,1727,1728
请你计算这份报纸一共多少页(也就是最大页码,并不是用了几张纸哦)?
请填写表示总页数的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
2、煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
蓝桥杯软件大赛c真题及参考答案
第四届蓝桥杯软件大赛c/C++本科B组真题1.题目标题: 高斯日记大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。
这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。
高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。
提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21请严格按照格式,通过浏览器提交答案。
注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。
# include <stdio.h>int isLeap(int y);int nday(int y, int m, int d);void ymd(int n);int main(void){int n = 8113;int yb = 1777, mb = 4, db = 30; //birthn = n - 1 + nday(yb, mb, db);int yp, np; //printfor(int i = yb; n > 0; i++) {yp = i;np = n;if(isLeap(i)) n -= 366;else n -= 365;}printf("%d-", yp);ymd(np);return 0;}int nday(int y, int m, int d){int n = 0;int a[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};for(int i = 0; i < (m - 1); i++) n += a[isLeap(y)][i];n += d;return n;}void ymd(int n){int a[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};int mp, dp;for(int i = 0; n > 0; i++) {dp = n; mp = i;n -= a[isLeap(i)][i]; }printf("%d-%d\n", mp + 1, dp);}int isLeap(int y){if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) return 1;else return 0;}最后答案1799-07-162.标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
蓝桥杯考试题及答案
蓝桥杯考试题及答案一、单项选择题(每题2分,共10题)1. 以下哪个不是计算机编程语言?A. PythonB. JavaC. C++D. English答案:D2. 在HTML中,用于定义最重要的标题的标签是?A. `<h1>`B. `<h6>`C. `<head>`D. `<body>`答案:A3. 在数据库中,用于删除表中数据的SQL命令是?A. DELETEB. DROPC. INSERTD. UPDATE答案:A4. 哪种数据结构允许在两端进行插入和删除操作?A. 栈B. 队列C. 链表D. 数组答案:C5. 在计算机科学中,二进制数“1010”转换为十进制数是多少?A. 8B. 10C. 12D. 14答案:B6. 以下哪个选项不是面向对象编程的特性?A. 封装B. 继承C. 多态D. 过程化答案:D7. 在JavaScript中,用于定义函数的关键字是?A. functionB. varC. letD. const答案:A8. 在Unix/Linux系统中,查看当前目录下的文件和文件夹的命令是?A. lsB. pwdC. cdD. mkdir答案:A9. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C10. 在计算机图形学中,3D图形渲染中常用的坐标系统是?A. 笛卡尔坐标系B. 极坐标系C. 柱面坐标系D. 球面坐标系答案:A二、填空题(每题2分,共5题)1. 在Python中,用于创建空列表的语法是____。
答案:[]2. 在HTML中,用于创建超链接的标签是____。
答案:<a>3. SQL查询语句中,用于选择所有列的关键字是____。
答案:*4. 在计算机科学中,一个算法的时间复杂度通常用____表示。
答案:大O符号5. 在JavaScript中,用于获取元素的CSS样式的属性是____。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
第二题
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:26
{
for(int j = 0 ; j < 4; j ++)
{
//判断每个数周围是否满足
if(flag[i][j] == 0)continue;
for( int k = 0 ; k < 8 ; k ++)
{
int x,y;
x = i + dir[k][0];
y = j + dir[k][1];
if(x < 0 || x >= 3 || y < 0 || y >= 4 || flag[x][y] == 0) continue;
flag[i][j] = 1;
flag[0][0] = 0;
flag[2][3] = 0;
}
void Solve()
{
int dir[8][2] = { 0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};
int book = true;
for(int i = 0 ; i < 3 ; i ++)
int i = p;
int j = r + 1;
int x = a[p];
while(1){
while(i<r && a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
swap(a,i,j);
}
______________________;
return j;
}
void quicksort(int a[], int p, int r)
{
if(!visit[i])
{
visit[i] = true;
num[index] = i;
dfs_creat(index+1);
visit[i] = false;
}
}
}
int main()
{
init();
dfs_creat(1);
return 0;
}
仔细阅读代码,填写划线部分缺少的内容。
注意:不要填写任何已有内容或说明性文字。
答案f(a,k+1,m-j,b)或f(a,k+1,m-i,b)
第六题
方格填数
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
sum += i;
if( sum == 236)
{
printf("start : %d end : %d\n",start,end);
}
}
}
return 0;
}
第三题
凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
for(i=0; i<N; i++) printf("%d ", a[i]);
printf("\n");
return 0;
}
注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
答案:swap(a,p,j)
第五题
抽签
X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
{
double sum = num[0] + (double)num[1] / num[2] + (double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]);
if(sum == 10)
{
ans ++;
}
}
void dfs(int index)
#include<stdio.h>
int main()
{
int start,end;
for(start = 1 ; start < 236 ; start ++)
{
for( end = start ; end < 236 ; end ++ )
{
int sum = 0;
for(int i = start; i <= end; i ++)
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:116
#include <stdio.h>
#include <string.h>
int mpt[3][4];
int mpt_visit[3][4];
int num[6];
int have[13];
int visit[13];
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案是:1580
#include <stdio.h>
if(have[mpt[tx][ty]] == 0 || mpt_visit[tx][ty])continue;
mpt_visit[tx][ty] = 1;
Count ++;
dfs_find(tx,ty);
}
}
void Solve()
{
int i;
memset(have,0,sizeof(have));
{
Count = 1;
mpt_visit[x][y] =1;
dfs_find(x,y);
break;
}
}
if(Count == 5)
{
ans ++;
}
}
//创建5个数的组合
void dfs_creat(int index)
{
if(index == 6)
{
Solve();
return;
}
for(int i = num[index-1] + 1; i < 13 ; i ++)
#include<stdio.h>
int main()
{
int a[101] ={0};
for(int i = 1 ; i < 101 ; i ++)
a[i] = a[i-1] + i;
int ans = 0;
for(int j = 1 ; j < 101 ; j ++)
ans += a[j];
printf("%d\n",ans);
2016
第一题
煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:171700
}
if(flag[x][y])
{
for(int i = 0 ; i < 10 ; i ++)
{
if(!visit[i])
{
visit[i] = true;
mpt[x][y] = i;
dfs(index+1);
visit[i] = false;
}
}
}
else
{
dfs(index+1);
}
}
int main()
#include <math.h>
int flag[3][4]; //表示哪些可以填数
int mpt[3][4]; //填数
bool visit[10];
int ans = 0;
void init() //初始化
{
int i,j;
for(i = 0 ; i < 3 ; i ++)
for(j = 0 ; j < 4 ; j ++)
memset(mpt_visit,0,sizeof(mpt_visit));
for(i = 1; i < 6 ; i ++) have[num[i]] = 1;
for(i = 0 ; i < 12 ; i ++)
{
int x,y;
x = i / 4;