2013年蓝桥杯软件大赛预赛C本科B组试题

2013年蓝桥杯软件大赛预赛C本科B组试题
2013年蓝桥杯软件大赛预赛C本科B组试题

1、题目标题: 高斯日记

大数学家高斯有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

高斯出生于:1777年4月30日。

在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

高斯获得博士学位的那天日记上标着:8113

请你算出高斯获得博士学位的年月日。

提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21

请严格按照格式,通过浏览器提交答案。

注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。

#include

int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};

struct date

{

int year,month,day;

};

int leap(int year)//判闰年

{

return (year%4==0&&year%100!=0)||year%400==0;

}

int date2int(date a)//日期转天数偏移

{

int ret=a.year*365+(a.year-1)/4-(a.year-1)/100+(a.year-1)/400,i;

days[1]+=leap(a.year);

for(i=0;i

days[1]=28;

return ret+a.day;

}

date int2date(int a)//天数偏移转日期

{

date ret;

ret.year=a/146097*400;

for (a%=146097;a>=365+leap(ret.year);a-=365+leap(ret.year),ret.year++);

days[1]+=leap(ret.year);

for (ret.month=1;a>=days[ret.month-1];a-=days[ret.month-1],ret.month++);

days[1]=28;

ret.day=a+1;

return ret;

}

int main()

{

date a,b;

int i,n,m;

while(scanf("%d",&n)!=-1)

{

a.year=1777;

a.month=4;

a.day=30;

m=date2int(a)+n-1;

b=int2date(m);

printf("%d-%d-%d\n",b.year,b.month,b.day);

}

return 0;

}

2、标题: 马虎的算式

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是:36 x 495 = ?

他却给抄成了:396 x 45 = ?

但结果却很戏剧性,他的答案竟然是对的!!

因为36 * 495 = 396 * 45 = 17820

类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

假设a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)

能满足形如:ab * cde = adb * ce 这样的算式一共有多少种呢?

请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

答案直接通过浏览器提交。

注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

# include

int main(void)

{

int a, b, c, d, e;

int n = 0;

for(a = 1; a < 10; a++) {

for(b = 1; b < 10; b++) {

if(a == b) {

continue;

}

for(c = 1; c < 10; c++) {

if(c == a || c == b) {

continue;

}

for(d = 1; d < 10; d++) {

if(d == c || d == b || d == a) {

continue;

}

for(e = 1; e < 10; e++) {

if(e == d || e == c || e == b || e == a) {

continue;

}

if((a * 10 + b) * (c * 100 + d * 10 + e) == (a * 100 + d * 10 + b) * (c * 10 + e)) {

n++;

}

}

}

}

}

}

printf("%d\n", n);

}

3、题目标题: 第39级台阶

小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!

站在台阶前,他突然又想着一个问题:

如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?

请你利用计算机的优势,帮助小明寻找答案。

要求提交的是一个整数。

分析:构造一个表达式:tmp[n][m]=k 表示用m步走完n阶台阶有k种走法,则可以得出:

tmp[1][1]=1;

tmp[2][1]=1;

tmp[2][2]=1;

当n>2时,有:

tmp[n][m]=tmp[n-1][m-1]+tmp[n-2][m-1];

最终结果P(n)= ∑ tmp[n][t] ( n%2==0?n/2:n/2+1<=t<=n)

public class ys_c_03 {

public static void main(String[] args) {

//n个台阶用m步走完有多少种情况

int tmp[][]=new int[40][40];

tmp[1][1]=1;

tmp[2][1]=1;

tmp[2][2]=1;

int n=0,m=0,t=0;

for(n=3;n<=39;n++){

t=n%2==0?n/2:n/2+1;

for(m=t;m<=n;m++){

tmp[n][m]=tmp[n-1][m-1]+tmp[n-2][m-1];

}

}

//最少步数

t=39/2+1;

int sum=0;

for(;t<=39;t++){

if(t%2==0){//偶数步

sum+=tmp[39][t];

}

}

System.out.println(sum);

}

}

4、标题: 黄金连分数

黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。

对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!

言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。

比较简单的一种是用连分数:

1

黄金数= ---------------------

1

1 + -----------------

1

1 + -------------

1

1 + ---------

1 + ...

这个连分数计算的“层数”越多,它的值越接近黄金分割数。

请你利用这一特性,求出黄金分割数的足够精确值,要求四舍五入到小数点后100位。

小数点后3位的值为:0.618

小数点后4位的值为:0.6180

小数点后5位的值为:0.61803

小数点后7位的值为:0.6180340

(注意尾部的0,不能忽略)

你的任务是:写出精确到小数点后100位精度的黄金分割值。

注意:尾数的四舍五入!尾数是0也要保留!

显然答案是一个小数,其小数点后有100位数字,请通过浏览器直接提交该数字。

注意:不要提交解答过程,或其它辅助说明类的内容。

# include

# define F 50

int main(void)

{

unsigned long long int fib[1000];

int f = 0;

int a[101];

fib[0] = 0;

fib[1] = 1;

for(int i = 2; fib[i] < 1e18; i++) {

fib[i] = fib[i - 1] + fib[i - 2];

f++;

}

printf("%d\n", f);

unsigned long long int x = fib[F - 2];

unsigned long long int y = fib[F - 1];

for(int i = 0; i < 101; i++) {

a[i] = x / y;

x = (x % y) * 10;

printf("%d", a[i]);

}

}

最后答案

0.618033988749894848197195952550862122051066357451853845372318760122958282197178434 8083863296133320592

5、题目标题:前缀判断

如下的代码判断needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL。

比如:"abcd1234" 就包含了"abc" 为前缀

char* prefix(char* haystack_start, char* needle_start)

{

char* haystack = haystack_start;

char* needle = needle_start;

while(*haystack && *needle){

if( *(haystack++) != *(needle++) ) return NULL; //填空位置}

if(*needle) return NULL;

return haystack_start;

}

请分析代码逻辑,并推测划线处的代码,通过网页提交。

注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

6、标题:三部排序

一般的排序有许多经典算法,如快速排序、希尔排序等。

但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

比如,对一个整型数组中的数字进行分类排序:

使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!

以下的程序实现了该目标。

其中x指向待排序的整型数组,len是数组的长度。

void sort3p(int* x, int len)

{

int p = 0;

int left = 0;

int right = len-1;

while(p<=right){

if(x[p]<0){

int t = x[left];

x[left] = x[p];

x[p] = t;

left++;

p++;

}

else if(x[p]>0){

int t = x[right];

x[right] = x[p];

x[p] = t;

right--;

}

else{

__p++__; //填空位置

}

}

}

如果给定数组:

25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0

则排序后为:

-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25

请分析代码逻辑,并推测划线处的代码,通过网页提交

注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

7、标题:错误票据

某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。

因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。

你的任务是通过编程,找出断号的ID和重号的ID。

假设断号不可能发生在最大和最小号。

要求程序首先输入一个整数N(N<100)表示后面数据行数。

接着读入N行数据。

每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000)

每个整数代表一个ID号。

要求程序输出1行,含两个整数m n,用空格分隔。

其中,m表示断号ID,n表示重号ID

例如:

用户输入:

2

5 6 8 11 9

10 12 9

则程序输出:

7 9

再例如:

用户输入:

6

164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196

172 189 127 107 112 192 103 131 133 169 158

128 102 110 148 139 157 140 195 197

185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190

149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188

113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119

则程序输出:

105 120

资源约定:

峰值内存消耗< 64M

CPU消耗< 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中#include ,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

#include

#include

#include

void main()

{

int j=0;

int k=0;

int n=0;

int i=0;

int m=0;

int ld,cf;

char s[100];

char num[10];

int a[100];

//读取数据

scanf("%d",&j);

for(k=0;k<=j;k++)

{

while((scanf("%c",&s[n]))>=1 && s[n]!='\n')

{

n++;

}

s[n++]=' ';

}

//将字符数组S,通过中间字符数组num,转换为整型数组a

m=0;

for(i=1;i

{

j=0;

while(s[i]!=' ')

{

num[j++]=s[i];

i++;

}

i++;

a[m++] = atoi(num);

memset(num,' ',sizeof(num));

}

//冒泡排序,并且查找出重复的数字

for(i=0;i

{

for(j=i+1;j

{

if(a[i]>a[j])

{

k=a[i];

a[i]=a[j];

a[j]=k;

}

if(a[i]==a[j])

cf=a[i];

}

}

//查找出漏掉的数字

k=a[0]+1;

for(i=1;i

{

if(a[i]==cf)

{

i++;

k++;

continue;

}

if(a[i]!=k)

{

ld = k;

k=a[i]+1;

}

else k++;

}

printf("%d %d\n",ld,cf);

}

8、题目标题:翻硬币

小明正在玩一个“翻硬币”的游戏。

桌上放着排成一排的若干硬币。我们用* 表示正面,用o 表示反面(是小写字母,不是零)。

比如,可能情形是:**oo***oooo

如果同时翻转左边的两个硬币,则变为:oooo***oooo

现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:

程序输入:

两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000

程序输出:

一个整数,表示最小操作步数

例如:

用户输入:

**********

o****o****

程序应该输出:

5

再例如:

用户输入:

*o**o***o***

*o***o**o***

程序应该输出:

1

资源约定:

峰值内存消耗< 64M

CPU消耗< 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中#include ,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

# include

int turn(int a[], int b[])

{

int n = 0;

for(int i = 0; a[i] != EOF; i++) {

if(a[i] == b[i]) {

continue;

} else {

b[i + 1] = (b[i + 1] == '*' ? 'o' : '*');

n++;

}

}

return n;

}

int main(void)

{

int a[1000];

int b[1000];

int c;

int i;

i = 0;

while((c = getchar()) != '\n') {

a[i++] = c;

}

a[i] = EOF;

i = 0;

while((c = getchar()) != '\n') {

b[i++] = c;

}

b[i] = EOF;

printf("%d\n", turn(a, b));

}

9、标题:带分数

100 可以表示为带分数的形式:100 = 3 + 69258 / 714

还可以表示为:100 = 82 + 3546 / 197

注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。

类似这样的带分数,100 有11 种表示法。

题目要求:

从标准输入读入一个正整数N (N<1000*1000)

程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。

注意:不要求输出每个表示,只统计有多少表示法!

例如:

用户输入:

100

程序输出:

11

再例如:

用户输入:

105

程序输出:

6

资源约定:

峰值内存消耗< 64M

CPU消耗< 3000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中#include ,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

# include

# include

char flag[10];

char backup[10];

int check(int n)

{

do {

flag[n % 10]++;

} while(n /= 10);

if(flag[0] != 0) {

return 1;

}

for(int i = 1; i < 10; i++) {

if(flag[i] > 1) {

return 1;

}

}

return 0;

}

int checkAll(void)

{

for(int i = 1; i < 10; i++) {

if(flag[i] != 1) {

return 1;

}

}

return 0;

}

int main(void)

{

int num;

int count = 0;

scanf("%d", &num);

int left, right, up, down;

for(left = 1; left < num; left++) {

memset(flag, 0, 10);

if(check(left)) {

continue;

}

memcpy(backup, flag, 10);

for(down = 1; down < 100000; down++) {

memcpy(flag, backup, 10);

up = (num - left) * down;

if(check(down) || check(up)) {

continue;

}

if(! checkAll()) {

//printf("%d = %d + %d / %d\n", num, left, up, down);

count++;

}

}

}

printf("%d\n", count);

}

10、标题:连号区间数

小明这些天一直在思考这样一个奇怪而有趣的问题:

在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:

如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。

当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。

输入格式:

第一行是一个正整数N (1 <= N <= 50000), 表示全排列的规模。

第二行是N个不同的数字Pi(1 <= Pi <= N),表示这N个数字的某一全排列。

输出格式:

输出一个整数,表示不同连号区间的数目。

示例:

用户输入:

4

3 2

4 1

程序应输出:

7

用户输入:

5

3 4 2 5 1

程序应输出:

9

解释:

第一个用例中,有7个连号区间分别是:[1,1], [1,2], [1,3], [1,4], [2,2], [3,3], [4,4]

第二个用例中,有9个连号区间分别是:[1,1], [1,2], [1,3], [1,4], [1,5], [2,2], [3,3], [4,4], [5,5] 资源约定:

峰值内存消耗< 64M

CPU消耗< 5000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中#include ,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

# include

int main(void)

{

int n;

int count = 0;

scanf("%d", &n);

int a[n];

for(int i = 0; i < n; i++) {

scanf("%d", &a[i]);

}

for(int i = 0; i < n; i++) {

int min = n;

int max = 1;

for(int j = i; j < n; j++) {

if(min > a[j]) {

min = a[j];

}

if(max < a[j]) {

max = a[j];

}

if(max - min == j - i) {

count++;

}

}

}

printf("%d\n", count);

}

白盒测试工具

白盒测试工具主要有:Numega 、PuRe 、软件纠错工具(Rational Purify )。

内存资源泄漏检查:Numega 中的BounceChecher ,Rational 的Purify 等。

代码覆盖率检查:Numega 的TrueCoverage ,Rational 的PureCoverage ,TeleLogic 公司的LogiScope ,Macabe 公司的Macabe 。

代码性能检查:Numega 的TrueTime ,Rational 的Quantify 等。

代码静态度量分析度量检查工具:LogiScope 和Macabe 等。

黑盒测试

黑盒测试工具主要有:QACenter 、SQA TeamTest 、Rational Visual Visual Test 。QACenter :QACenter 帮助所有测试人员创建一个快速、可重用的测试过程。这些测试工具自动帮助管理测试过程、快速分析和调试程序,包括针对回归、强度、单元、并发、集成、移植,容量和负载建立测试用例,自动执行测试和产生文档结果。QACenter 主要包括以下几个模块:QARun :应用的功能测试工具。QALoad :强负载下应用的性能测试工具。QADirector :测试的组织设计和创建以及管理工具。TrackRecord :集成的缺陷跟踪管理工具。EcoTools :高层次的性能监测工具。

第七届蓝桥杯大赛2016年蓝桥杯个人赛 (电子类) 省赛 单片机设计与开发科目

准考证号 工位号 注意:只填写准考证号和工位号,否则试卷作废 密 封 线 ----------------------------------------------------------------------------- 第七届蓝桥杯全国软件和信息技术专业人才大赛个人赛 (电子类)省赛 单片机设计与开发科目 竞赛时间:5小时 题 号 一 二 三 总 分 配 分 10 30 60 100分 得 分 “模拟风扇控制系统”设计任务书 功能简述 “模拟风扇控制系统”能够模拟电风扇工作,通过按键控制风扇的转动速度和定时时间, 数码管实时显示风扇的工作模式,动态倒计时显示剩余的定时时间,系统主要由数码管显示、单片机最小系统、按键输入和电机控制保护电路组成,系统框图如图1所示: 图1. 系统框图 单总线驱动程序、CT107D 单片机考试平台电路原理图以及本题所涉及到的芯片数据手册,可参考计算机上的电子文档。程序流程图及相关工程文件请以考生号命名,并保存在计算机上的考生文件夹中(文件夹名为考生准考证号,文件夹保存在监考员指定位置)。 DS18B20 MCU 按键输入 LED 指示灯 数码管显示 PWM 输出

设计任务及要求 1.工作模式 设备具有“睡眠风”、“自然风”和“常风”三种工作模式可以通过按键切换,通过单片机P34引脚输出脉宽调制信号控制电机运行状态,信号频率为1KHz。 1.1“睡眠风”模式下,对应PWM占空比为20%; 1.2“自然风”模式下,对应PWM占空比为30%; 1.3“常风”模式下,对应PWM占空比为70%; 2.数码管显示 数码管实时显示设备当前工作模式和剩余工作时间(倒计时),如图2所示。 - 1 - 80 0 5 0 工作模式:睡眠风熄灭剩余工作时间:50秒 图2.工作模式和剩余工作时间显示 “睡眠风”状态下,对应数码管显示数值为1,自然风模式下,显示数值为2,常风模式下,显示数值为3。 3.按键控制 使用S4、S5、S6、S7四个按键完成按键控制功能。 2.1 按键S4定义为工作模式切换按键,每次按下S4,设备循环切换三种工作模式。 工作过程如下: 睡眠风自然风常风 2.2 按键S5定义为“定时按键”每次按下S5,定时时间增加1分钟,设备的剩余 工作时间重置为当前定时时间,重新开始倒计时,工作过程如下: 0分钟1分钟2分钟 设备剩余工作时间为0时,停止PWM信号输出。 2.3 按键S6定义为“停止”按键,按下S6按键,立即清零剩余工作时间,PWM 信号停止输出,直到通过S5重新设置定时时间。 2.4 按键S7定义为“室温”按键,按下S7,通过数码管显示当前室温,数码管显 示格式如图3所示,再次按下S7,返回图2所示的工作模式和剩余工作时间

蓝桥杯_C-校内选拔题

第六届“蓝桥杯”校内选拔考试(C/C++)1、Problem A: 求和(20分) Description 输入一个十进制数,计算它转化成四进制数后各个位数的和。Input 输入有多个实例,输入一个十进制数n。(0

2、Problem B: 多少种方法(20分) Description 听说大一的小伙伴们刷题特别crazy,LM大魔王也有点按耐不住了,也开始刷题啊。于是他找了下面一道题开始做,但这道题好难啊,听说LM大魔王用了好久好久好久好久好久。。。的时间才做出来。题目如下:一些正整数都可以被连续的一个或多个素数之和表示。例如,整数53有两种表示5 + 7 + 11 + 13 + 17和53。41有三种表示2 + 3 + 5 + 7 + 11 + 13、11 + 13 + 17和41。3只有一种表示3。整数20没有这样表示。注意,被加数必须为连续的素数,所以整数20不可以表示为7+13也不可表示为3+5+5+7。你的任务是编写一个程序,计算出给定的正整数能有多少连续素数之和表示方法。 Crazy and clever的小伙伴们你们能用多长时间A掉呢? Input 有多组输入。每行输入一个正整数N(2<=N<=10000). Output 对应每组输入的数据N,输出有多少种连续素数之和表示N的方法。

Sample Input 2 3 17 41 20 666 12 53 Sample Output 1 1 2 3 1 2

2018蓝桥杯试题

2018蓝桥杯C语言b组国赛真题 1.标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种。 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。 小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍, 剩下的当然都是5元面额的。 银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗? (5元,2元,1元面额的必须都有,不能是0) 注意,需要提交的是一个整数,不要填写任何多余的内容。 手算都可以。。。下面是代码,答案74 1.#include https://www.360docs.net/doc/8217433279.html,ing namespace std; 3.int main(){ 4.for(int i=1;i<40;i++){ 5.for(int j=1;j<200;j++){ 6.if(5*i+2*10*j+1*j==200) 7. cout<<"5*"<

13. 2.标题:激光样式 14.x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打 出光柱。 15.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打 开! 16.国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激 光效果? 17.显然,如果只有3台机器,一共可以成5种样式,即: 18.全都关上(sorry, 此时无声胜有声,这也算一种) 19.开一台,共3种 20.开两台,只1种 21.30台就不好算了,国王只好请你帮忙了。 22.要求提交一个整数,表示30台激光器能形成的样式种数。 23.注意,只提交一个整数,不要填写任何多余的内容。 思路很简单,暴力搜索,30个灯光从左到右,从左边第一个开始,第一个可以开关,第二个要根据左边的灯光是否开启来取值,以此类推。。。答案2178309 1.#include 2.#include https://www.360docs.net/doc/8217433279.html,ing namespace std; 4.int ans = 0; 5.int x[31];//0代表关,1代表开 6. 7.void dfs(int index){ 8.if(index == 30){ 9.ans++; 10.return; 11.}

蓝桥杯哦2010第一届大赛试题

第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i1) printf(“%d\n”, n); } 第二题,以下函数的功能是将给定字符串进行倒序输出,请完成该函数空缺部分。 char* p = “abcdef”; char* q = (char*)malloc(strlen(p)+1); for(int i=0, int len=strlen(p); i

第三题,(这题的题目到底是要干啥,本人到现在沿未明了,数学学统计好,但可以确定原题给出的代码就是如此) int f(int m, int n) { int a = 1; int m1 = m; //—–(3)—- a *= m1–; int b = 1; while(n>1) b *= n–; return a / b; } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237 请完善下面这个函数,以实现此功能 int f(int n) { int N[4]; for(int i=0; i<4; i++) { N[3-i] = n % 10;

2014蓝桥杯湖师校内选拔赛试题及参考代码

2014蓝桥杯湖师校内选拔赛试题及参考代码 1.神秘的数 是这样的一个整数,组成这个数的各位数字阶乘之和正好等于它本身。 例如:对于一个三位数abc,如果abc=a!+b!+c!, 则该数是神秘的数。 对于一个四位数abcd,如果abcd=a!+b!+c!+d!, 则该数是神秘的数。 要求输出范围在100~50000之间的所有的神秘的数。每个数输出一行,每行从第1列输出,不要输出空行。 结果: 145 40585 参考代码: #include int main() { int i,j,a,b,t,s; for(i=100;i<=50000;i++) { s=0; a=i; while(a!=0) { t=1; b=a%10; for(j=1;j<=b;j++) t=t*j; s=s+t; a=a/10; } if(s==i) printf("%d\n",i); } return 0; } 2 轮转数(每个字符依次向右循环移动) 有一字符串(小写a-z): abcdefghijklmnopqrstuvwxyz 经过1次向右循环移动,得到字符串zabcdefghijklmnopqrstuvwxy 经过2次向右循环移动,得到字符串yzabcdefghijklmnopqrstuvwx 经过3次向右循环移动,得到字符串xyzabcdefghijklmnopqrstuvw 编写程序,输入向右移动次数n(n为int类型), 输出向右移动n次数后得到的字符串。 样例输入 4 样例输出 wxyzabcdefghijklmnopqrstuv 样例输入

8 样例输出 stuvwxyzabcdefghijklmnopqr 测试数据: 输入6 输出uvwxyzabcdefghijklmnopqrst 输入523 输出xyzabcdefghijklmnopqrstuvw 参考代码 #include int main() { int i,n,j=0; scanf("%d",&n); for(i=26-n%26;j<26;i=(i+1)%26,++j) printf("%c",'a'+i); return 0; } 3.将十进制数转换成十六进制数 输入要求: 包括多组测试数据。输入一个不超过10位正整数,无前导零。输入以0结束。输出要求: 输出其十六进制表示(不打印前导零,A~F字母大写)。 输入样例: 12 20 123456789 0 输出样例: C 14 75BCD15 提示:输入以0结束,不要打印多余字符! 测试数据 输入 234 1234 9123456780 0 输出 EA 4D2 21FCCE70C 参考代码: #include int main() { int i,j,dnum,t; char xnum[100]; while(1) { scanf("%d",&dnum);

蓝桥杯比赛心得

蓝桥杯比赛心得 首先想说的是,这次做的太糟糕了吧。第一是时间没有分配好,第二是太过心急。 做第一题时,很快写出了公式,心想咋出这么简单的题目。本想自己不敲代码了,直接拿笔算算得了。后来发现用笔也不是太容易,就敲了代码,刚开始不知道怎么回事不出结果,后来用了个double 来保存结果,然后就输出结果了。后来查了查才知道之前用了这句 If(i*2.3+j*1.9==82.3)cout<然后Iffabs((i*2.3+j*1.9-82.3)<0.0000001)cout<

迷茫了会,后来就用了四个for循环,将结果用a,b分别表示出来,然后很快结果就出来了,开始会考虑用的double不会有误差,然后还特意将编译出来的结果一个一个的看看,确认是对的,然后就稳稳当当的提交了86!后来和学姐他们讨论的时候才发现自己有个问题忘了考虑了,2/2 *3/3这样的情况是要除去的!!!好吧,就这么错了!很多时候都会觉得自己太粗心大意了,然后就想到了曾经看到的一篇文章,说是所谓的粗心是你对知识的理解不透彻掌握的不扎实。往往以为自己做出来了就完事大吉了,然而最后才发现自己顾此失彼了! 做完分子分母问题当时觉得前面三道题做的必定是对的,然后就又把后面的题目有都看了一遍,同时决定后面的三道答题放弃不做了。接着我看来看7进制问题,发现题目没有看懂。。然后我觉得数字填数挺有意思就看看手写能不能搞定,当时看到了上下两个三角形一共六条边,一共12个数1-12,平均每条线上的值的和为26,然后觉得那两个空就是10或者5,15+11==26,然后在本子上划了划,感觉做不出来,就放那了,其实可以先随便蒙一个的,很大可能就对了呀。。。总之还是没有思路吧。 接着就是随便看其他的题目了瞄到了最后一题,当时感觉是可以做出来的,只是时间会用的比较长。好像是从11点多点开始做的,一直做到1点,太死心塌地了,,,感觉差一点就做出来了吧,后来和老师讨论才发现自己的思路还是错的。。。若是拿最后放弃最后一道题检查一下也不至于搞的这么惨。。。。。 比赛的时候还是有点紧张的吧,,心态调的不是太好,最重要的

2015年蓝桥杯A组试题及答案

2015蓝桥杯A组试题 方程整数解 方程: a^2 + b^2 + c^2 = 1000 (或参见【图1.jpg】) 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。 你能算出另一组合适的解吗? 请填写该解中最小的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 #include"stdio.h" #include"windows.h" int main() { int a, b, c; for (a = 1; a < 31;a++) for (b= 1; b < 31; b++) for (c = 1; c < 31; c++) { if (a*a + b*b + c*c == 1000) printf("%d %d %d\n", a, b, c); } printf("%d %d %d",a,b,c); system("pause"); return 0; } 星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写。不能出现其它文字或符号。 21+31(2014年)+365(2015年)+366(2016年)=783;1000-783=217(2017年的第217天爆炸);31+28+31+30+31+30+31=212(2017年前七个月的天数);217-212=5(2017年第8个月的第五天爆炸) 大牛有用excel直接拖,用vbs算,路漫漫其修远兮...... 奇妙的数字 小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容。 69,一个个试吧。 格子中输出 StringInGrid函数会在一个指定大小的格子中打印指定的字符串。 要求字符串在水平、垂直两个方向上都居中。 如果字符串太长,就截断。 如果不能恰好居中,可以稍稍偏左或者偏上一点。 下面的程序实现这个逻辑,请填写划线部分缺少的代码。 #include #include void StringInGrid(int width, int height, const char* s) { int i,k; char buf[1000]; strcpy(buf, s); if(strlen(s)>width-2) buf[width-2]=0; printf("+"); for(i=0;i

蓝桥杯Java试题

1. 历届试题核桃的数量 问题描述 小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是: 1. 各组的核桃数量必须相同 2. 各组内必须能平分核桃(当然是不能打碎的) 3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式 输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30) 输出格式 输出一个正整数,表示每袋核桃的数量。 样例输入1 2 4 5 样例输出1 20

样例输入2 3 1 1 样例输出2 3 JAVA 源代码 1import java.util.Scanner; 2public class Main { 3 4public static void main(String[] args){ 5 Scanner sc=new Scanner(System.in); 6int a=sc.nextInt(); 7int b=sc.nextInt(); 8int c=sc.nextInt(); 9int i; 10for(i=1;;i++){ 11if(i%a==0&&i%b==0&&i%c==0) 12 13break; 14 } 15 System.out.println(i); 16 }} 2.基础练习Sine之舞 时间限制:1.0s 内存限制:512.0MB 问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学

好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1 FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。 输入格式 仅有一个数:N<201。 输出格式 请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。 样例输入 3 样例输出 ((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin( 3)))+1 语言JAVA 源代码17import java.util.Scanner; 18public class Main { 19private static int m; 20public static void main(String[] args){ 21 Scanner sc=new Scanner(System.in); 22 m=sc.nextInt(); 23for(int i=0;i

蓝桥杯比赛要求

七、奖项设置及评选办法 7.1 省赛 1.参赛选手奖 省赛每个组别设置一、二、三等奖,比例分别为10%、20%、30%,总比例为实际参赛人数的60%,零分卷不得奖。省赛一等奖选手获得直接进入全国总决赛资格。所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。 2.指导教师奖 省赛中获奖的参赛选手的指导教师将获得“蓝桥杯全国软件和信息技术专业人才大赛(××赛区)优秀指导教师”称号。 3.参赛学校奖 参赛组织工作表现突出、经审批符合相关条件的单位,将获得“蓝桥杯全国软件和信息技术专业人才大赛(××赛区)优秀组织单位”称号; 参赛选手成绩优异,经审批符合相关条件的学校将获得“蓝桥杯全国软件和信息技术专业人才大赛(××赛区)优胜学校”称号。 7.2 总决赛 全国总决赛按参赛项目和成绩,为获奖学生、教师和组织单位颁发相应证书和奖 励。其中: 1.参赛选手奖 个人赛根据相应组别分别设立特、一、二、三等奖及优秀奖。在决赛奖项设置中, 每个组别设置特等奖1名,一等奖不高于5%,二等奖占20%,三等奖不低于25%,优秀奖 不超过50%,零分卷不得奖。 所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获 奖证书。 大学组总决赛三等奖及以上选手,如果获得本校免试推研资格,将获得北京大学软 件与微电子学院等院校的面试资格,并优先录取为该院普通硕士研究生。 大学组总决赛三等奖及以上选手,可免除笔试,直接获得百度、IBM等企业在员工 招聘及实习生招聘中的面试机会。 2.指导教师奖 所有获奖选手的指导教师,均可获得“蓝桥杯全国软件和信息技术专业人才大赛优秀 指导教师”证书。 3.参赛学校奖 参赛组织工作成绩突出、经审批符合相关条件的单位,获“蓝桥杯全国软件和信息技 术专业人才大赛优秀组织单位”称号; 参赛选手成绩优异、经审批符合相关条件的学校,获“蓝桥杯全国软件和信息技术专 业人才大赛优胜学校”称号。

蓝桥杯练习系统题目汇总

蓝桥杯练习系统题目汇总: 入门训练 1. Fibonacci数列 问题描述 Fibonacci数列的递推公式为:F n=F n-1+F n-2,其中F1=F2=1。 当n比较大时,F n也非常大,现在我们想知道,F n除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示F n除以10007的余数。 说明:在本题中,答案是要求F n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 参考代码:c++ 1.#include 2.#include 3.#define MOD 10007 4.#define MAXN 1000001 5.int n, i, F[MAXN]; 6.int main() 7.{ 8.scanf("%d", &n); 9.F[1] = 1; 10.F[2] = 1; 11.for(i = 3; i <= n; ++i) 12.F[i] = (F[i-1] + F[i-2]) % MOD; 13.printf("%d\n", F[n]); 14.return0; 15.}

java: 1.import java.util.Scanner; 2.public class Main{ 3.public static void main(String[] args) { 4.Scanner scanner = new Scanner(System.in) ; 5.int num = scanner.nextInt() ; 6.int[] a = new int[num+2] ; 7.a[1] = a[2] = 1; 8.if(num == 1) { 9.a[num] = 1 ; 10.}else if(num == 2) { 11.a[num] = 1 ; 12.}else{ 13.for(int i = 3; i <= num; i++) { 14.a[i] = (a[i - 1] + a[i - 2] ) % 10007 ; 15.} 16.} 17.System.out.println(a[num]); 18.} 19.} 2. 实数输出 问题描述 给定圆的半径r,求圆的面积。 输入格式 输入包含一个整数r,表示圆的半径。 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。 说明:在本题中,输入是一个整数,但是输出是一个实数。 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。 实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。 样例输入 4 样例输出 50.2654825 数据规模与约定

2016第七届蓝桥杯CC++-B组题解

第一题 煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 这道题坑死了,第一次看堆成三角棱锥形,草稿本画半天都没画出个三角棱锥。后来单独看每句话才知道每层一个三角形叠起来就是三角棱锥。我去。 看懂题目这个题目就很简单了,每层的个数是上层的个数加上层数,意思就是An = An-1 + n,然而题目是求的前100层一共多少煤球。所以是Sn.代码双重for循环就出来了。答案是:171700 1.#include 2.int main() 3.{ 4.int a[101] ={0}; 5.for(int i = 1 ; i < 101 ; i ++) 6. a[i] = a[i-1] + i; 7.int ans = 0; 8.for(int j = 1 ; j < 101 ; j ++) 9. ans += a[j]; 10. printf("%d\n",ans); 11.return 0; 12.} 第二题: 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 呵呵,水题,但是出题人不严谨啊!!!怎么就不能考虑万一他今年236岁呢....好了不说了强迫症犯了。 蓝桥杯这种不像acm的题目的,能暴力直接暴力。不用想太多。直接从1~236 枚举start, end 分别表示他开始过生日的年龄和今年的年龄,然后计算之间吹蜡烛的总和如果等于236就输出start ,end. 答案是:26 1.#include 2.int main()

第十一届蓝桥杯大赛软件类省赛第三场 CC++

第十一届蓝桥杯大赛软件类省赛第三场C/C++大学B组 第十一届蓝桥杯大赛软件类省赛第三场 C/C++大学B组 【考生须知】 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。 考试时间为4小时。考试期间选手可浏览自己已经提交的答案,被浏览的答案允许拷贝。时间截止后,将无法继续提交或浏览答案。 对同一题目,选手可多次提交答案,以最后一次提交的答案为准。 选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。 试题包含“结果填空”和“程序设计”两种题型。 结果填空题:要求选手根据题目描述直接填写结果。求解方式不限。不要求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容。 程序设计题:要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果才有机会得分。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 对于编程题目,要求选手给出的解答完全符合GNU C/C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 代码中允许使用STL类库。 注意:main函数结束必须返回0 注意:所有依赖的函数必须明确地在源文件中#include,不能通过工程设置而省略常用头文件。 所有源码必须在同一文件中。调试通过后,拷贝提交。 提交时,注意选择所期望的编译器类型。 第十一届蓝桥杯大赛软件类省赛第三场1

第十一届蓝桥杯大赛软件类省赛第三场C/C++大学B组 试题A:数青蛙 本题总分:5分 【问题描述】 “一只青蛙一张嘴,两只眼睛四条腿。两只青蛙两张嘴,四只眼睛八条腿。三只青蛙三张嘴,六只眼睛十二条腿。……二十只青蛙二十张嘴,四十只眼睛八十条腿。” 请问上面这段文字,如果完全不省略,全部写出来,从1到20只青蛙,总共有多少个汉字。 约定:数字2单独出现读成“两”,在其他数里面读成“二”,例如“十二”。10读作“十”,11读作“十一”,22读作“二十二”。 请只计算汉字的个数,标点符号不计算。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 试题A:数青蛙2

第十一届蓝桥杯校内赛校内选拔赛(2020蓝桥杯校选1-javac.)

第十一届蓝桥杯校内赛/校内选拔赛(2020蓝桥杯校选1-java/c) 一、问题描述 请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制。 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. 二、问题描述 两个二进制数11110011101和1111101001的和是多少?请用二进制表示,注意在提交的时候不要提交前导0。 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个二进制数,在提交答案时只填写这个二进制数,填写多余的内容将无法得分。 三、问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。 请问,总共能排列如多少个不同的单词。 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 四、问题描述 在2019个有区别的球中选3个球放在一个盘子里,请问有多少种选法? 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 五、问题描述 小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。 给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。 元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。 输入格式: 输入一行,包含一个单词,单词中只包含小写英文字母。

第七届蓝桥杯C++程序设计大学B组省赛题目

第七届蓝桥杯程序设计大学B组省赛题目 第一题:煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 第二题:生日蜡烛 某君从某年开始每年都举办一次生日,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日的? 请填写他开始过生日的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 第三题:凑算式 B A + + = 10 C (如果显示有问题,可以参见【图1】) 这个算式中代表1~9的数字,不同的字母代表不同的数字。 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。 这个算式一共有多少种解法?

注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。 第四题:快速排序 排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它。 这样,排序问题就被分割为两个子区间。 再分别对子区间排序就可以了。 下面的代码是一种实现,请分析并填写划线部分缺少的代码。 <> ( a[], i, j) { t = a[i]; a[i] = a[j]; a[j] = t; } ( a[], p, r) { i = p; j = r + 1; x = a[p]; (1){ (i

2017年蓝桥杯省赛赛前集训题(共14题)

第1题:星系炸弹(2015年省赛C/C++B组第2题)在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。 有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 ?结果:2017-08-05 ?解决方法:用Excel拖 这个题会了的同学们把上课讲过的,课件上的,其他几道Excel拖动题都做一遍。 第2题:(2015年校内选拔赛C/C++B组第3题)如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗? 显然,这个值是介于2和3之间的一个数字。 请把x的值计算到小数后6位(四舍五入),并填写这个小数值。 注意:只填写一个小数,不要写任何多余的符号或说明。 #include #include

#include using namespace std; int main() { double x; for(x=2;x<=3;x+=1e-7) { if (abs(pow(x,x)-10)<1e-6) cout<

蓝桥杯七届单片机开发组决赛试题

第七届蓝桥杯单片机设计与开发组总决赛试题 “电压、频率采集设备任务书” 功能简述 “电压、频率采集设备”能够实现测量信号频率和电压,修改、储存工作参数,记录、查询事件等功能,系统由按键单元、ADC 采集单元、显示单元、储存单元组成,系统框图如图1所示: 图1.系统框图 I2C 总线、DS1302时钟芯片时序控制程序、CT107D 单片机考试平台电路原理图以及本题涉及到的芯片数据手册,可参考计算机上的电子文档。原理图文件、程序流程图及相关工程文件请以考生号命名,并保存在计算机上的考生文件夹中(文件夹名为考生准考证号,文件夹位于Windows 桌面上)。单片机 数码管显示 电压测量频率测量E2PROM 实时时钟 矩阵键盘

任务设计及要求 1.频率信号测量 使用竞赛板NE555方波信号发生器产生用于频率测量功能测试的方波信号,信号频率范围为500Hz --20KHz,电位器RB3调节信号频率,可使用“跳线帽”将单片机P34引脚与方波信号发生器输出引脚NET_SIG 短接。 2.电压信号测量 使用竞赛板上RB2电位器输出测试电压信号,信号输出范围0V-5V。 3.实时时钟功能 读取DS1302实时时钟芯片,并通过数码管显示时间数据,设备上电后初始化时间配置为23时59分55秒。 4.记录与输出功能 根据给定硬件的性能参数,设计合理的采样周期,当电压低于电压下线V L 或高于电压上线V H 时,将事件类型和发生时间保存到E2PROM 中。设备中 只需要保存最近一次发生的电压波动情况,数据储存格式可自定义。 上图例,电压连续变化过程中,在T1和T2时刻会触发事件记录功能。 5.显示与按键控制 5.14x4矩阵键盘按键功能定义图2所示: 图2.按键功能定义S7 S11S15S19S6 S10S14S18S5 S9S13S17S4S8S12S16时钟加电压减频率查询功能空

蓝桥杯比赛相关事项

蓝桥杯比赛相关事项 1.竞赛时间 省赛时长:4小时,6个组别同时进行。 决赛时长:4小时。决赛详细赛程安排另行通知。 详细赛程安排另行通知。 2.竞赛形式 个人赛。 一人一机,全程机考。 选手机器通过局域网连接到各个考场的竞赛服务器。选手答题过程中不允许访问互联网,也不允许使用本机以外的资源(如USB连接)。 以“服务器-浏览器”方式发放试题、回收选手答案。 3.c/c++ 语言开发环境: ·Dev-cpp 5.4.0 支持ANSI C,ANSIC++,STL ·c/c++ API 帮助文档(中文,chm格式) 4.试题形式 竞赛题目完全为客观题型。 根据选手所提交答案的测评结果为评分依据。 5.1.结果填空题 ·题目描述一个具有确定解的问题。要求选手对问题的解填空。 ·不要求解题过程,不限制解题手段(可以使用任何开发语言或工具,甚至是手工计算),只要求填写最终的结果。 5.2.代码填空题 ·题目描述一个具有确定解的问题。 ·题目同时给出该问题的某一解法的代码,但其中有缺失部分。 要求选手读懂代码逻辑,对其中的空缺部分补充代码,使整段代码完整。只填写空缺部分,不要填写完整句子。 不要写注释、说明或其它题目中未要求的内容。 5.3.编程大题 题目为若干具有一定难度梯度、分值不等的编程题目。 这些题目的要求明确、答案客观。 题目一般要用到标准输入和输出。要求选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式输出解。题目一般会给出示例数据。 一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上,选手不可能通过猜测或其它非编程的手段获得问题的解。 选手给出的解法应具有普遍性,不能只适用于题目的示例数据(当然,至少应该适用于题目的示例数据)。 为了测试选手给出解法的性能,评分时用的测试用例可能包含大数据量的压力测试用例,选手选择算法时要尽可能考虑可行性的问题。

2017年蓝桥杯省赛赛前集训题(共14题)

2017年蓝桥杯省赛赛前集训题(共14题)

第1题:星系炸弹(2015年省赛C/C++B组第2题)在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。 有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 ?结果:2017-08-05 ?解决方法:用Excel拖 这个题会了的同学们把上课讲过的,课件上的,其他几道Excel拖动题都做一遍。 第2题:(2015年校内选拔赛C/C++B组第3题)如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗? 显然,这个值是介于2和3之间的一个数字。 请把x的值计算到小数后6位(四舍五入),并填写这个小数值。 注意:只填写一个小数,不要写任何多余的符号或说明。

答案:14 解法1:next_permutation的解法 #include #include using namespace std; int main() { int p[15]={1,1,1,1,1,2,2,2,2,2,2,2,2,2,2};//1是店,2是花 int sum,cnt=0; do { sum=2; for(int i=0;i<15;i++) if(p[i]==1) sum<<=1; else if(p[i]==2) sum--; if(sum==0) cnt++; } while(next_permutation(p,p+14));//因为最后一次遇到的肯定是花,所以只排前14个数,不排最后一个 cout< using namespace std; #define N 14//因为最后一次肯定是花,所以只排14个数 int cnt; bool ok(int p[],int begin,int end) { for (int i = begin; i < end; i++) if (p[i] == p[end]) return false; return true; } void perms(int p[],int start) { int i; if(start==N-1)

相关文档
最新文档