2013年蓝桥杯(第4届)预赛本科A组C语言真题解析

合集下载

蓝桥杯c c 省赛试题及答案解析

蓝桥杯c c 省赛试题及答案解析

2016蓝桥杯c-c++B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。

具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

答案:171700#include<>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);return 0;}第二题生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。

现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的?请填写他开始过生日party的年龄数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

答案:26#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 ++)sum += i;if( sum == 236){printf("start : %d end : %d\n",start,end); }}}return 0;}第三题凑算式B DEFA + --- + ------- = 10C GHI(如果显示有问题,可以参见【图】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

蓝桥比赛练习C语言[5篇]

蓝桥比赛练习C语言[5篇]

蓝桥比赛练习C语言[5篇]第一篇:蓝桥比赛练习C语言时间限制:1.0s 内存限制:256.0MB1闰年判断问题描述给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年: 1.年份是4的倍数而不是100的倍数; 2.年份是400的倍数。

其他的年份都不是闰年。

输入格式输入包含一个整数y,表示当前的年份。

输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

说明:当试题指定你输出一个字符串作为结果(比如本题的yes 或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。

样例输入2013 样例输出no 样例输入2016 样例输出yes 数据规模与约定1990 <= y <= 2050。

本题的C参考代码如下:1.#include2.int main()3.{4.int y;5.scanf(“%d”, &y);6.if(y%4==0 && y%100!=0 || y%400==0)7.printf(“yes”);8.else9.printf(“no”);10.return 0;11.} 2.01字串问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。

它们的前几个是:00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。

输入格式本试题没有输入。

输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出00000 00001 00010 00011 本题的C参考代码如下:1.#include2.int main()3.{4.int i, j, k, l, m;5.for(i = 0;i <= 1;++i)6.for(j = 0;j <= 1;++j)7.for(k = 0;k <= 1;++k)8.for(l = 0;l <= 1;++l)9.for(m = 0;m <= 1;++m)10.printf(“%d%d%d%d%dn”, i, j, k, l, m);11.return 0;12.}3.字母图形问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

2013蓝桥杯java c组考查知识点梳理

2013蓝桥杯java c组考查知识点梳理

2013蓝桥杯java c组考查知识点梳理在2013年的蓝桥杯中,Java和C语言组的考试一直备受关注。

很多参赛者都希望了解这两个组的考查知识点,以便更好地备战比赛。

本文将从深度和广度两个方面对2013蓝桥杯Java C组考查知识点进行全面评估,并据此撰写一篇有价值的文章,以帮助读者更好地掌握这些知识点。

一、Java组考查知识点梳理1. 基础知识在Java组的考试中,基础知识是最为重要的一部分。

包括数据类型、运算符、控制语句等基础知识点都是考查的重点。

对于面向对象的概念、类与对象、继承和多态等内容也需要有较好的掌握。

2. 集合框架Java中的集合框架是比较重要的知识点,包括List、Set、Map等集合的特点和用法,以及集合类的常见方法和使用场景等内容都是需要重点掌握的。

3. 异常处理在Java程序设计中,异常处理是至关重要的一部分。

需要了解异常的分类、抛出和捕获异常的方法,以及如何进行异常的处理和避免等内容。

4. 线程与并发Java中的线程和并发是比较复杂的知识点,在考试中也经常被考查。

需要了解线程的基本概念、线程的创建和启动、线程的状态转换以及线程同步和互斥等内容。

5. 其他内容除了以上主要知识点外,还需要对IO流、网络编程、反射等内容有一定的了解,以便在考试中有所准备。

二、C语言组考查知识点梳理1. 基础知识C语言组的考试同样重视基础知识的掌握。

包括基本数据类型、运算符、控制语句等内容都是考查的重点,需要注意各种数据类型的范围、运算符的优先级和结合性等知识点。

2. 数组与指针在C语言中,数组与指针是比较重要的知识点,需要了解数组的定义和使用方法,以及指针的概念、指针与数组的关系、指针的运算等内容。

3. 函数与指针函数是C程序设计中的重要部分,需要了解函数的声明和定义、函数的参数传递方式、函数的返回值、递归函数等内容。

指针作为C语言中的重要概念,也需要对指针的用法和指针与数组的关系有一定的了解。

第四届蓝桥杯c语言试题及答案

第四届蓝桥杯c语言试题及答案

第四届蓝桥杯c语言试题及答案第四届蓝桥杯C语言试题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,下列哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. C语言中,用于定义一个整型数组的语句是?A. int array[10];B. int [10] array;C. int array[];D. int [10] array[];答案:A3. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable_2D. variable-2答案:C4. 在C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strncpyC. strcatD. strcmp答案:A5. 下列哪个选项不是C语言中的运算符?A. %B. &&C. :D. ==答案:C6. 在C语言中,哪个函数用于计算字符串的长度?A. strlenB. strcpyC. strcatD. strcmp答案:A7. C语言中,下列哪个选项不是标准输入输出库函数?A. printfB. scanfC. getcharD. malloc答案:D8. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. forD. while答案:B9. 在C语言中,下列哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C10. C语言中,下列哪个选项是合法的二进制常量?A. 0b1010B. 0x1AC. 0101D. 0b2答案:A二、程序填空题(每题5分,共20分)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;}```答案:程序已完整,无需填空。

2013模拟c本科A组

2013模拟c本科A组

2013年模拟赛c/c++ 本科A组考生须知:●考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压。

●模拟考试时间为2小时。

时间截止后,提交答案无效。

●在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。

●选手可浏览自己已经提交的答案。

被浏览的答案允许拷贝。

●对同一题目,选手可多次提交答案,以最后一次提交的答案为准。

●参赛选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。

●参赛选手必须通过浏览器方式提交自己的答案。

选手在其它位置的作答或其它方式提交的答案无效。

●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。

结果填空题:要求参赛选手根据题目描述直接填写结果。

求解方式不限。

不要求源代码。

把结果填空的答案直接通过网页提交即可,不要书写多余的内容。

代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。

所填写的代码不超过一条语句(即中间不能出现分号)。

把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)直接通过网页提交即可,不要书写多余的内容。

注意选择自己使用的编译环境。

程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。

考生的程序只有能运行出正确结果才有机会得分。

注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

所有源码必须在同一文件中。

调试通过后,拷贝提交。

注意选择自己使用的编译环境。

对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。

代码中允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。

例如,不能使用CString类型(属于MFC类库)。

第四届蓝桥答案

第四届蓝桥答案

第四届“蓝桥杯”选拔赛试题高职组1、猜年龄#include "stdafx.h"#include "math.h"void main(){int a[10]={0},LF,SCF;int i,j,k;for(i=11;pow(i,4)< 1000000;i++){LF=i*i*i;SCF=i*i*i*i;//四位数a[0]=LF/1000; //存放立方的千位a[1]=LF/100%10; //存放立方的百位a[2]=LF/10%10; //存放立方的十位a[3]=LF%10; //存放立方的个位//六位数a[4]=SCF/100000; //存放四次方的十万位a[5]=SCF/10000%10; //存放四次方的万位a[6]=SCF/1000%10; //存放四次方的千位a[7]=SCF/100%10; //存放四次方的百位a[8]=SCF/10%10; //存放四次方的十位a[9]=SCF%10; //存放四次方的个位for(j=0;j<=9;j++){for(k=j+1;k<10;k++){if(a[j]!=a[k] && SCF>=100000) //判断两两是否相等continue;elsebreak;}}if(k==11) //说明找到了符合条件的数{printf("当年岁数为:%d岁\n",i); //正确答案为18break;}}}2、马虎的算式#include "stdio.h"void main(){int a,b,c,d,e;int sum=0;for(a=1;a<=9;a++){for(b=1;b<=9;b++){for(c=1;c<=9;c++){for(d=1;d<=9;d++){for(e=1;e<=9;e++){if( (a!=b && a!=c && a!=d && a!=e) && ( b!=c && b!=d && b!=e) && (c!=a && c!=d && c!=e) && (d!=a && d!=b && d!=e) ){if((a*10+b) * (c*100+d*10+e) == (a*100+d*10+b) * (c*10+e)){printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);sum++;}}}}}}}printf("总共有%d种\n",sum);}3、振兴中华#include "stdio.h"void main(){int a[4][5];int i, j;for (j = 0; j <5; j++) //第一行列循环{a[0][j] = 1; //第一行每一列都设为1 }for (i = 1; i <4; i++) //第一列行循环{a[i][0] = 1; //每一行的第一列都设为1for (j = 1; j < 5; j++) //列循环{a[i][j] = a[i-1][j] + a[i][j-1]; //等于前一行同列的值+ 同一行前一列的值}}printf("%d\n", a[3][4]);}4、幻方填空#include "stdafx.h"void main(){int a[4][4];int k=1;int i,j,t;int sum1[4]={0},sum2[4]={0},sum3=0,sum4=0;for(i=0;i<4;i++) //行{for(j=0;j<4;j++) //列{a[i][j]=k; //将1-16 逐一赋给16个元素k++; //保持k的值与元素对应}}for(i=0;i<2;i++) //遍历开始{for(j=0;j<4;j++){if((i==j) || (i+j==3)) //只交换一轮{t=a[i][j];a[i][j]=a[4-1-i][4-1-j];a[4-1-i][4-1-j]=t;}}}for(i=0;i<4;i++){for(j=0;j<4;j++) //打印幻方{printf("%d\t",a[i][j]);}printf("\n");}}5、公约数公倍数#include "stdafx.h"void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}void myfunc(int a, int b){int m,n,r;if(a<b) swap(&a,&b);m=a;n=b;r=a%b;while(r!=0){a=b;b=r;r=a%b;}printf("%d\n",b); // 最大公约数printf("%d\n",m*n/b); // 最小公倍数}void main(){int a,b;scanf("%d,%d",&a,&b);myfunc(a,b);}6、三部排序法#include "stdafx.h"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++; //填空位置}}}void main(void){int x[] = {25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0};int len = 14;sort3p(x, len);for(int i = 0; i < len; i++){printf("%d,", x[i]);}}7、核桃的数量#include"stdafx.h"void swap(int *a,int *b){int t;t=*a;*a=*b;*b=t;}int fun(int a,int b){int m,n,r;if(a<b)swap(&a,&b);m=a;n=b;r=a%b;while(r!=0){a=b;b=r;r=a%b;//求两数最小公倍数:先求两数最大公约数,再将两数之积除以两数最大公约数}return m*n/b;}void main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);printf("%d\n",fun( fun(a,b),fun(b,c) ) );//求三数最小公倍数:先求前两个数最小公倍数,再求前两个数最小公倍数与第三个数的最小公倍数}8、打印十字图#include "stdafx.h"void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}int go(int i, int j, int n){if (i > n * 2 + 3)i = n * 4 + 6 - i;if (j > n * 2 + 3)j = n * 4 + 6 - j;if (i < j) swap(&i, &j);if (i <= 2 && j <= 2) return 0;if (i % 2 == 1 && j >= i - 2) return 1;if (j % 2 == 1 && j != i - 1) return 1;return 0;}void main(){int n;scanf("%d", &n);int i, j;for (i = 1; i <= n*4+5; i++){for (j = 1; j <= n*4+5; j++){if (go(i, j, n))printf("$");elseprintf(".");}printf("\n");}}9、带分数#include "stdafx.h"#define N 9int num[N] = {1,2,3,4,5,6,7,8,9};int tag[3][3] = {{4,3,2},{5,3,1},{6,2,1}};void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}int go(int i, int n){int a, b, c;int count = 0;for (a = 0; a < 3; a++){int r[3] = {0} , d = 0;for (b = 0; b < 3; b++)for (c = 0; c < tag[a][b]; c++)r[b] = r[b] * 10 + num[d++];if (r[0] + r[1] / r[2] == n && r[1] % r[2] == 0) count++;if (r[0] + r[2] / r[1] == n && r[2] % r[1] == 0) count++;if (r[1] + r[0] / r[2] == n && r[0] % r[2] == 0) count++;if (r[1] + r[2] / r[0] == n && r[2] % r[0] == 0) count++;if (r[2] + r[0] / r[1] == n && r[0] % r[1] == 0) count++;if (r[2] + r[1] / r[0] == n && r[1] % r[0] == 0) count++;}while (i < N){int k = i + 1;while (k < N){swap(num + i, num + k);count += go(i + 1, n);swap(num + i, num + k);k++;}i++;}return count;}void main(){int n;scanf("%d", &n);printf("%d", go(0, n)); }10、剪格子#include"stdafx.h"#define N 10int num[N][N];// tag是用来标志格子有没有加入,用颜色来表示,1为已加入,黑色,0为没加入,白色// 初始化全为白色int tag[N][N] = {0};int m, n;int r = 100;//判断格子(i,j)颜色是否t,一样的话就找他周围颜色也为t//返回找到的总数int find(int i, int j, int t, int ntag[][N]){int count = 0;//出界或走过if (i < 0 || i >= n || j < 0 || j >= m || ntag[i][j] == 1)return 0;//标为已走过ntag[i][j] = 1;//颜色不一样,返回if (tag[i][j] != t)return 0;count++;count += find(i - 1, j, t, ntag);count += find(i + 1, j, t, ntag);count += find(i, j - 1, t, ntag);count += find(i, j + 1, t, ntag);return count;}//判断是否当前的tag,能不能剪成两块int isbad(){int i, j, k = 0;int t = tag[0][0];int ntag1[N][N] = {0};int ntag2[N][N] = {0};//找一块连在一起的黑格子int ge1 = find(0, 0, t, ntag1);for (i = 0; i < n; i++){for (j = 0; j < m; j++){if (tag[i][j] != t){k = 1;break;}}if (k == 1)break;}if (i == n && j == m)return 0;//找连在一起的白格子int ge2 = find(i, j, tag[i][j], ntag2);return ge1 + ge2 != m * n;//若黑+白!= 总数说明不止两块,如:黑$白#/*##$$##$$##这种情况就有2块白的,1块黑的*/}// 判断格子(i,j)是否出界,以及判断格子可不可以剪成两块连续的格子int bad(int i, int j){if (i < 0 || i >= n || j < 0 || j >= m || tag[i][j] == 1)return 1;tag[i][j] = 1; //格子加入int b = isbad(); //判断格子可不可以剪成两块连续的格子tag[i][j] = 0; //格子退出return b;}/** i, j 下一个要加入的格子* k 已加入的格子数* count 剩余总分* 执行完,全局tag是没有改变的*/void go(int i, int j, int k, int count){// 判断格子是否可加入if (bad(i, j) || count < num[i][j])return;// 格子可加入,已加入格子数+1k++;// 如果剩余总分刚好等于加入的格子的分数,那么这种情况符合要求if (count == num[i][j]){if (r > k)r = k;return;}// 加入格子,tag改变为1tag[i][j] = 1;count -= num[i][j];// 寻找周围格子是否可加入go(i - 1, j, k, count); // 执行完,tag是没有改变的go(i + 1, j, k, count); // 执行完,tag是没有改变的go(i, j - 1, k, count); // 执行完,tag是没有改变的go(i, j + 1, k, count); // 执行完,tag是没有改变的// 格子退出, tag恢复为0,也就是保证执行完,tag是没有改变的tag[i][j] = 0;}int main(){scanf("%d %d", &m, &n);int i, j;int half = 0;for (i = 0; i < n; i++)for (j = 0; j < m; j++){scanf("%d", &num[i][j]);// 计算总分half += num[i][j];}// 判断总分是否为偶数if (half % 2 == 0 && half >= num[0][0] * 2) {// 计算总分的一半half /= 2;// go(int i, int j, int k, int count)// 下一个要加入的格子为i, j: (0,0)// 已加入的格子数为0// half 剩余总分go(0, 0, 0, half);}if (r == 100)r = 0;printf("%d", r);return 0;}。

2013蓝桥杯试题及答案

2013蓝桥杯试题及答案

2013蓝桥杯试题及答案一、选择题1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 在Java中,以下哪个是合法的类名?A. 2ClassB. classC. ClassD. Class_答案:C3. 在HTML中,用于插入图片的标签是:A. <img>B. <image>C. <picture>D. <photo>答案:A4. 在数据库设计中,实现表之间关系的是:A. 主键B. 外键C. 索引D. 视图答案:B5. 在Python中,以下哪个是正确的字符串格式化方法?A. %sB. .format()C. str()D. printf()答案:B二、填空题6. 在C++中,标准模板库(STL)中的_________容器提供了平均时间复杂度为O(1)的插入和删除操作。

答案:vector7. 在JavaScript中,用于定义一个函数的关键字是_________。

答案:function8. 在SQL中,用于查询数据的关键字是_________。

答案:SELECT9. 在CSS中,用于设置元素宽度的属性是_________。

答案:width10. 在操作系统中,进程和线程的主要区别在于_________。

答案:进程是资源分配的基本单位,线程是执行的基本单位。

三、简答题11. 请简述软件开发过程中的需求分析阶段的主要任务。

答案:需求分析阶段的主要任务是确定软件系统的功能和性能要求。

这包括与客户沟通以了解他们的需求,收集和分析这些需求,然后明确和文档化软件必须执行的功能。

此外,还包括确定系统的性能要求,如响应时间、并发用户数等。

12. 请描述在网络编程中,TCP和UDP协议的主要区别。

答案:TCP(传输控制协议)和UDP(用户数据报协议)是网络层的两种主要协议。

TCP提供面向连接、可靠的字节流服务,它确保数据包按顺序、无误差地传输,适用于需要可靠传输的应用,如网页浏览和文件传输。

2013年蓝桥杯模拟赛答案

2013年蓝桥杯模拟赛答案

2013年蓝桥杯模拟赛答案⼀、标题: 1的个数从1到20的所有数字中含有多少个“1”仔细数⼀下,应该是12个。

那么从1到1000的整数中,含有多少个“1”呢?请填写该数字。

#include <iostream>using namespace std;#define MAX 1000int main(){int count = 0;int m;for(int i = 1; i <= MAX; i++){int j = i;while(j){m = j % 10;if(m == 1){count++;}j = j / 10;}}cout << count << endl;}题⽬标题: 1的个数参考答案:301得分:10⼆、标题:硬币⽅案有50枚硬币,可能包括4种类型:1元,5⾓,1⾓,5分。

已知总价值为20元。

求各种硬币的数量。

⽐如:2,34,6,8 就是⼀种答案。

⽽ 2,33,15,0 是另⼀个可能的答案,显然答案不唯⼀。

你的任务是确定类似这样的不同的⽅案⼀共有多少个(包括已经给出的2个)?直接提交该数字,不要提交多余的内容。

#include <iostream>using namespace std;#define MAX 20int main(){int count = 0;for(int i = 0; i <= 20; i++){for(int j = 0; j <= 40; j++){for(int k = 0; k <= 200; k++){for(int m = 0; m <= 400; m++){if(i + j + m + k == 50 && i * 100 + j * 50 + k *10 + m * 5 == 2000){count++;}}}}}cout << count << endl;}题⽬标题:硬币⽅案参考答案:50三、标题:四⽅定理数论中有著名的四⽅定理:所有⾃然数⾄多只要⽤四个数的平⽅和就可以表⽰。

蓝桥杯c语言答案

蓝桥杯c语言答案

蓝桥杯c语言答案【篇一:2013蓝桥杯c语言编程答案】代码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 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

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

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

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

答案:1423. 标题: 振兴中华小明参加了学校的趣味运动会,其中的一个项目是:跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)从我做起振我做起振兴做起振兴中起振兴中华比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。

一直要跳到“华”字结束。

要求跳过的路线刚好构成“从我做起振兴中华”这句话。

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?答案是一个整数,请通过浏览器直接提交该数字。

答案:354. 标题: 幻方填空幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。

欧洲最著名的幻方是德国数学家、画家迪勒创作的版画《忧郁》中给出的一个4阶幻方。

他把1,2,3,...16 这16个数字填写在4 x 4的方格中。

如图p1.jpg所示,即:16 ? ? 13? ? 11 ?9 ? ? *? 15 ? 1表中有些数字已经显露出来,还有些用?和*代替。

2013年第四届蓝桥杯软件类省赛真题_CC++程序设计本科A组

2013年第四届蓝桥杯软件类省赛真题_CC++程序设计本科A组
{
struct EV ev = {0,0};
struct EV v1;
struct EV v2;
if(*x==0) return ev;
if(x[0]>='0' && x[0]<='9'){
ev.result = x[0]-'0';
ev.n = 1;
return ev;
}
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
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
1. 6位正整数
2. 每个数位上的数字不同
3. 其平方数的每个数位不含原数字的任何组成数位
答案是一个6位的正整数。
请通过浏览器提交答案。
注意:只提交另一6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
例如:
用户输入:
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

本科2013蓝桥杯A试题答案

本科2013蓝桥杯A试题答案

2011年蓝桥杯预赛Java本科A组试题和答案分类:算法学习2013-05-06 08:221770人阅读评论(0)收藏举报2011年java本科A组algorithm算法预赛试题和答案蓝桥杯2011 模拟java 本科注意:本套模拟题主要模拟命题形式与考核范围。

真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。

所填写的代码不多于一条语句(即不能出现分号)。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。

注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

1. 代码填空(满分2分)在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。

请完善以下代码:public class MyTest{public static void main(String[] args){Vector a = new Vector();for(char i='A'; i<='F'; i++) a.add("" + i);for(int k=0; k<3; k++){int d = ____________________________;System.out.println(a.remove(d));}}}new Random().nextInt(6-k) //(int)(Math.random()*(6-k))2. 代码填空(满分3分)不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。

下面的代码演示了如何把键盘输入的3进制数字转换为十进制。

试完善之。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String s = br.readLine();int n = 0;for(int i=0; i<s.length(); i++){char c = s.charAt(i);if(c<'0' || c > '2') throw new RuntimeException("Format error");n =______________________;}System.out.println(n);3*n+c-'0'3. 代码填空(满分4分)有如下程序,完成的功能为:找出数组中的最大元素。

2013蓝桥杯java c组考查知识点梳理

2013蓝桥杯java c组考查知识点梳理

"2013蓝桥杯java c组考查知识点梳理"在2013年蓝桥杯java c组的比赛中,涉及到了一些重要的知识点,这些知识点不仅对于比赛本身有着重要的意义,同时也对于我们在日常的学习和开发中有着重要的指导意义。

在本文中,我们将对2013蓝桥杯java c组考查的知识点进行深入的梳理和总结,帮助读者全面地了解这些知识点,并能够灵活地运用到实际的编程中。

1. 数据结构数据结构是计算机科学中非常重要的内容,它对于有效地组织和管理数据起着至关重要的作用。

在2013蓝桥杯java c组的考试中,涉及到了一些基础的数据结构,包括数组、链表、栈、队列等。

这些数据结构不仅在比赛中有着重要的应用,同时也是我们在日常开发中必须熟练掌握的内容。

2. 算法设计在比赛中,算法设计是至关重要的一环。

对于2013蓝桥杯java c组的考试而言,涉及到了一些常见的算法,包括排序算法、查找算法、递归算法等。

这些算法的设计和实现是我们在编程中经常会用到的内容,因此对于这些算法的理解和掌握至关重要。

3. Java语言特性在java题目中,不仅要求熟练掌握java语言的基础知识,还要求熟练掌握java语言的一些高级特性,包括多线程、异常处理、I/O操作等。

这些内容在实际的开发中有着重要的应用,因此对于这些知识点的深入理解和掌握是非常必要的。

4. C语言基础在c语言题目中,涉及到了一些基础的c语言知识,包括指针、内存管理、文件操作等。

这些内容对于我们在c语言开发中有着非常重要的作用,因此需要认真对待并深入理解这些知识点。

总结来说,2013蓝桥杯java c组的考试涉及到了一些非常重要的知识点,包括数据结构、算法设计、Java语言特性和C语言基础。

对于这些知识点的深入理解和掌握,不仅有助于在比赛中取得好成绩,同时也有助于我们在日常的学习和开发中能够更加灵活地运用这些知识点。

我认为我们应该在这些知识点上多下功夫,不断提升自己的编程能力和水平。

JavaC组蓝桥杯107道历年真题

JavaC组蓝桥杯107道历年真题

JavaC组蓝桥杯107道历年真题2013年JavaC组————蓝桥杯第四届猜年龄暴⼒法 or Set集合【问题描述】美国数学家维纳(N.Wiener)智⼒早熟,11岁就上了⼤学。

他曾在1935~1936年应邀来中国清华⼤学讲学。

⼀次,他参加某个重要会议,年轻的脸孔引⼈注⽬。

于是有⼈询问他的年龄,他回答说: “我年龄的⽴⽅是个4位数。

我年龄的4次⽅是个6位数。

这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。

” 请你推算⼀下,他当时到底有多年轻。

通过浏览器,直接提交他那时的年龄数字。

注意:不要提交解答过程,或其它的说明⽂字。

【答案】18【暴⼒法代码】public static void main(String[] args) {for (int age = 11; age < 20; age++) {System.out.println("年龄"+age+":"+Math.pow(age, 3) +" "+ Math.pow(age, 4));}}【输出】年龄11:1331.0 14641.0年龄12:1728.0 20736.0年龄13:2197.0 28561.0年龄14:2744.0 38416.0年龄15:3375.0 50625.0年龄16:4096.0 65536.0年龄17:4913.0 83521.0年龄18:5832.0 104976.0年龄19:6859.0 130321.0【Set集合代码】public static void main(String[] args) {for(int i=10;i<100;i++) {int i1=i*i*i;int i2=i1*i;String s1 = i1+"";String s2 = i2+"";if(s1.length()==4&&s2.length()==6&&Check(s1+s2)) {System.out.println(i);break;}}}public static boolean Check(String s) {Set<Character> set=new HashSet<Character>(); // 不允许出现重复元素for(int i=0;i<s.length();i++) {set.add(s.charAt(i));}return set.size()==10; // 等于10 正好0~9都存⼊Set集合中}组元素暴⼒法or递归全排列【问题描述】素数就是不能再进⾏等分的数。

[蓝桥杯][2013年第四届真题]公式求值

[蓝桥杯][2013年第四届真题]公式求值

[蓝桥杯][2013年第四届真题]公式求值思路:母函数 lucas ⼤数题解:代码:import java.math.*;import java.util.*;public class Main {public static final BigInteger MOD = new BigInteger("999101");public static final long mod = 999101;public static final int N = 1005, M = 999101;public static long fac[] = new long[M];public static long invf[] = new long [M];public static long pp[] = new long[M];public static long dp[][] = new long[N][N];public static long q_pow(long n, long k) {long res = 1;while(k > 0) {if(k%2 == 1) res = (res * n) % mod;k >>= 1;n = (n*n) % mod;}return res;}public static void init(BigInteger x) {fac[0] = 1;pp[0] = 1;for (int i = 1; i < M; ++i) fac[i] = (fac[i-1]*i) % mod;invf[M-1] = q_pow(fac[M-1], mod-2);for (int i = M-2; i >= 0; --i) invf[i] = invf[i+1]*(i+1) % mod;for (int i = 1; i < M; ++i) pp[i] = (pp[i-1]*2) % mod;long n = Long.valueOf(x.remainder(MOD).toString());dp[1][1] = n;for (int i = 2; i < N; ++i) {dp[i][1] = n;for (int j = 2; j <= i; ++j) {dp[i][j] = (dp[i-1][j-1]*(n-j+1) + dp[i-1][j]*j) % mod;dp[i][j] = (dp[i][j] + mod) % mod;}}}public static long C(BigInteger n, BigInteger m) {if(pareTo(n) > 0) return 0;int x = Integer.valueOf(n.toString()), y = Integer.valueOf(m.toString());//System.out.println(((fac[x]*invf[y])% mod * invf[x-y]) % mod);return ((fac[x]*invf[y])% mod * invf[x-y]) % mod;}public static long lucas(BigInteger n, BigInteger m) {if(pareTo(BigInteger.ZERO) == 0) return 1;return (lucas(n.divide(MOD), m.divide(MOD))*C(n.remainder(MOD), m.remainder(MOD))) % mod;}public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);BigInteger n = in.nextBigInteger();BigInteger m = in.nextBigInteger();int k = in.nextInt();init(n);long ans = lucas(n, m), res = 0;for (int i = 1; i <= k; i++) {int p = Integer.valueOf((n.subtract(BigInteger.valueOf(i)).remainder(BigInteger.valueOf(mod-1))).toString());res = (res + dp[k][i]*pp[p]) % mod;}ans = (ans * res) % mod;System.out.println(ans);}}以上代码不能ac,因为数据出错,加上特判才能ac。

本科2013蓝桥杯JAVA A组

本科2013蓝桥杯JAVA   A组

2013年蓝桥杯预赛Java本科A组试题分类:算法学习2013-05-06 08:181728人阅读评论(0)收藏举报蓝桥杯2013年java本科A组预赛试题算法algorithm第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛Java本科A组考生须知:l 考试开始后,选手首先下载题目到本机不被还原的盘符,并使用考场现场公布的解压密码解压试题。

l 考试时间为9:00-13:00,共4个小时。

13点整时间截止时,将无法提交答案。

选手因考试结束不能提交答案的,责任由选手自负。

l 在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。

l 选手可浏览自己已经提交的答案。

l 对同一题目,选手可多次提交答案,以最后一次提交的答案为准。

l 选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。

l 选手必须通过浏览器方式提交自己的答案。

选手在其它位置的作答或其它方式提交的答案无效。

试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。

结果填空题:要求参赛选手根据题目描述直接填写结果。

求解方式不限。

不要求源代码。

把结果填空的答案直接通过网页提交即可,不要书写多余的内容,比如:注释说明。

代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。

所填写的代码不超过一条语句(即中间不能出现分号)。

把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)直接通过网页提交即可,不要书写多余的内容,比如:注释或说明文字。

程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。

考生的程序只有能运行出正确结果,才有机会得分。

注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

所有源码必须在同一文件中。

调试通过后,拷贝提交。

蓝桥杯c语言大学a组试题及答案

蓝桥杯c语言大学a组试题及答案

蓝桥杯c语言大学a组试题及答案蓝桥杯C语言大学A组试题及答案1. 题目一:字符串反转要求:编写一个函数,实现字符串的反转。

答案:```cvoid reverseString(char* str) {int len = strlen(str);char temp;for (int i = 0; i < len / 2; i++) {temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}```2. 题目二:计算阶乘要求:编写一个函数,计算并返回一个整数的阶乘。

答案:```clong long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```3. 题目三:寻找最大值要求:给定一个整数数组,找出数组中的最大值。

答案:```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```4. 题目四:判断回文数要求:编写一个函数,判断一个整数是否是回文数。

答案:```cint isPalindrome(int x) {int reversed = 0, original = x;while (x > 0) {reversed = reversed * 10 + x % 10;x /= 10;}return original == reversed;}```5. 题目五:两数相加要求:给定两个非负整数,计算它们的和,并以相同的数位宽度返回结果。

2013蓝桥杯java c组考查知识点梳理

2013蓝桥杯java c组考查知识点梳理

2013蓝桥杯java c组考查知识点梳理2013年蓝桥杯java c组考查的知识点主要包括Java和C语言的基础知识、数据类型、控制语句、函数和数组、字符串、文件操作以及面向对象等内容。

接下来我将逐一梳理这些知识点。

首先是Java和C语言的基础知识。

这部分主要包括两种语言的基本语法、标识符、关键字、注释等内容。

在考试中,可能会涉及到这些基础知识的运用和理解,以及它们在编程中的作用。

其次是数据类型。

在Java和C语言中,数据类型是编程中非常重要的一部分。

包括整型、浮点型、字符型、布尔型等基本数据类型,以及数组、指针等复合数据类型。

考生需要掌握这些数据类型的定义、使用和转换等操作。

接下来是控制语句。

控制语句是编程中用来控制程序流程的重要部分,包括条件语句(if-else、switch)、循环语句(for、while、do-while)等。

在考试中,可能会测试考生对控制语句的运用和理解能力。

然后是函数和数组。

函数是编程中的一个重要概念,它可以将一段具有特定功能的代码封装起来,方便重复使用。

数组是一种存储多个相同类型数据的结构。

考生需要理解函数的定义、调用和参数传递等,以及数组的定义、初始化、访问等操作。

接着是字符串。

字符串是编程中常用的数据类型,主要用来存储文本信息。

考生需要掌握字符串的定义、初始化、比较、连接等操作,以及字符串和字符数组之间的转换。

再次是文件操作。

文件操作是编程中常用的一部分,主要涉及文件的读取、写入、关闭等操作。

考生需要了解文件操作的基本流程和方法,以及异常处理等相关内容。

最后是面向对象。

面向对象是一种常用的编程思想,它将世界看作由对象组成,对象之间通过消息传递进行交互。

考生需要理解对象、类、封装、继承、多态等面向对象的基本概念和原理。

总的来说,2013年蓝桥杯java c组考查的知识点涵盖了Java和C语言的基础知识、数据类型、控制语句、函数和数组、字符串、文件操作以及面向对象等内容。

[蓝桥杯][2013年第四届真题]危险系数

[蓝桥杯][2013年第四届真题]危险系数

[蓝桥杯][2013年第四届真题]危险系数题意: 求给出的两点u,v间的割点个数,如果u,v不再同⼀个连通图中,输出-1;题解: 昨天刚看完DFS求⽆向图的割点个数,碰巧看到了这道题,刷刷刷撸出⼀发代码,本地测试,通过,ok,提交,40分........ 后来仔细想了⼀下,对于求节点u,v间的割点个数,如果u有多条路径可以到达v,那么对于某⼀割点 i ,将其删去后,u,v不⼀定不连通。

那么如果再从所有的割点中判断其是否为u,v间的割点,岂不是太⿇烦了; 举⾜⽆措,找⼤佬博客想看看他们是怎么处理这种情况的,翻了好⼏篇博客,暴⼒据多,⽐较好的⼀篇就是通过DFS求出从u到v的总路径个数totPath, 对于属于u,v路径上的点 i ,记录其出现的次数为cnt[ i ],如果cnt[ i ]==totPath说明其为u,v路径上的割点;AC代码:1 #include<iostream>2 #include<cstdio>3 #include<cstring>4using namespace std;5#define mem(a,b) memset(a,b,sizeof(a))6const int maxn=1e3+50;78int n,m;9int cnt[maxn];10int path[maxn];11bool vis[maxn];12int num;13int head[maxn];14struct Edge15 {16int to;17int next;18 }G[4*maxn];19void addEdge(int u,int v)20 {21 G[num].to=v;22 G[num].next=head[u];23 head[u]=num++;24 }2526void DFS(int u,int aimPoint,int k,int &totPath)27 {28if(u == aimPoint)//来到⽬标节点v29 {30for(int i=0;i < k-1;++i)31 cnt[path[i]]++;//将路径上的点出现的次数++32 totPath++;33return ;34 }35for(int i=head[u];~i;i=G[i].next)//搜索所有可能的路径36 {37int v=G[i].to;38if(!vis[v])39 {40 vis[v]=true;41 path[k]=v;42 DFS(v,aimPoint,k+1,totPath);43 vis[v]=false;44 }45 }46 }47int Solve()48 {49int u,v;50 scanf("%d%d",&u,&v);51int totPath=0;52 DFS(u,v,0,totPath);5354if(totPath == 0)55return -1;5657int ans=0;58for(int i=1;i <= n;++i)59 ans += cnt[i] == totPath ? 1:0; 6061return ans;62 }63void Init()64 {65 num=0;66 mem(head,-1);67 mem(vis,false);68 mem(cnt,0);69 }70int main()71 {72while(~scanf("%d%d",&n,&m))73 {74 Init();75for(int i=1;i <= m;++i)76 {77int u,v;78 scanf("%d%d",&u,&v);79 addEdge(u,v);80 addEdge(v,u);81 }82 printf("%d\n",Solve());83 }84return0;85 }View Code。

2013第四届蓝桥杯预赛C语言本科组B答案

2013第四届蓝桥杯预赛C语言本科组B答案

Power By :忆_碎碎念第四届蓝桥杯c/c++ 本科B组,c++语言编写(注:c++的STL有各种便利,推荐用c++,但输入输出虽然用cin、cout很方便,可是速度和scanf、printf差很多,大量数据时不要用)11999-7-162#include<iostream>using namespace std ;int main(){int a, b, c, d, e ;int sum = 0 ;for (a = 1; a <= 9; a++)for (b = 1; b <= 9; b++){if (a == b) continue ;for (c = 1; c <= 9; c++){if (c == b || c == a) continue ;for (d = 1; d <= 9; d++){if (d == c || d == b || d== a) continue ;for (e = 1; e <= 9; 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))sum++ ;}}}}cout<<sum<<endl ;return 0 ;}3#include<iostream>using namespace std ;int sum = 0 ;void f (int n, int state) ;int main(){f (39, 1) ;cout<<sum<<endl ;return 0 ;}void f (int n, int state){if (n == 0 && state == 1) sum++ ;else if (n > 0){f (n-1, !state) ;f (n-2, !state) ;}}45*haystack != *needle6p++7#include<iostream>#include<algorithm>using namespace std ;int icount = 0 ;int a[10000] ;int main(){//freopen ("a.txt", "r", stdin);int n ;cin>>n ;while (n--){while ((cin>>a[icount++]).get() != '\n');}sort (a, a+icount) ;int i, prev, num1, num2;prev = a[0];for (i = 1; i < icount; i++){if (a[i] == prev){num2 = a[i];a[0]--;}if (a[i] != a[0] + i){num1 = a[0] + i;a[0]++;}prev = a[i];}cout<<num1<<" "<<num2<<endl;return 0 ;}8#include<iostream>#include<string>using namespace std;string str1, str2;int main(){cin>>str1>>str2;int icount = 0, i;for (i = 0; i < str1.size() - 1; i++)if (str1[i] != str2[i]){icount++;str1[i+1] = str1[i+1] == 'o' ? '*' : 'o';//str2[i+1] = str2[i+1] == 'o' ? '*' : 'o';}cout<<icount<<endl;return 0;}9容我再调试下10#include<iostream>using namespace std;int a[50000];int main(){int n, i, j;cin>>n;for (i = 0; i < n; i++)cin>>a[i];int icount=0,max,min;for (i = 0; i < n; i++){max = min = a[i];for (j = i + 1; j < n; j++){if (a[j] > max) max = a[j];if (a[j] < min) min = a[j];if (max - min == j - i) icount++;}}cout<<icount + n<<endl;return 0;}。

2013蓝桥杯C语言本科组B

2013蓝桥杯C语言本科组B

2013蓝桥杯C语言本科组B1、题目标题: 高斯日记(满分4分)大数学家高斯有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。

这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。

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

高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。

提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21答案:1799-7-16(本题拿电脑的计算器算的)2、题目标题: 马虎的算式(满分5分)小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是: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 这样的算式一共有多少种呢?答案:142种#include<stdio.h>int main(){int a,b,c,d,e;int sum=0;for(a=1;a<10;a++)for(b=1;b<10;b++)for(c=1;c<10;c++)for(d=1;d<10;d++)for(e=1;e<10;e++)if((10*a+b)*(100*c+10*d+e)==(a*100+d*10+b)*(c*10+e)&&a!=b&&a!=c&&a!=d&&a!=e &&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e){sum++;printf("%3d,%3d,%3d,%3d,%3d\n",a,b,c,d,e);}printf("%4d种\n",sum);}请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013年蓝桥杯(第4届)预赛本科A组真题解析高斯日记大数学家高斯有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。

这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。

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

高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。

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

1799-07-16(2)编程思路1。

从年的角度出发,先求出4月30日是1777年的第几天,加到日记标注的n上,并将n 减1,这样n为从1777年1月1日开始的天数;再看n中有多少年(设为x),加到1777上,并从n中减去这x年包括的天数;最后求得剩余天数在1777+x年中的日期。

(3)源程序1。

# include <stdio.h>int isLeap(int year);int main(){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 n;scanf("%d",&n);int year=1777, month=4,day=30; // birthfor (int i = 0; i < (month - 1); i++){n += a[isLeap(year)][i];}n += day-1;// 此时n为从1777年1月1日开始天数while (n > 0){if(isLeap(year))n -= 366;elsen -= 365;year++;}if (n<0){year--;n=n+(isLeap(year)?366:365);}for (int i = 0; n > 0; i++){day = n;month = i;n -= a[isLeap(year)][i];}printf("%d-%02d-%02d\n", year,month + 1, day);return 0;}int isLeap(int year){if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))return 1;elsereturn 0;}(4)编程思路2。

从月的角度出发,先将输入的日志标记天数n加30减2,表示从4月1日开始算;再从1777年4月开始,逐月从n中减去各月的天数,同时修改对应年份和月份,直到剩余的n不足1个月的天数,就可以求得结果。

(5)源程序2。

# include <stdio.h>int isLeap(int year);int main(){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 n;scanf("%d",&n);int year=1777, month=4,day=30; // birthn=n+day-2; day=1;while (n >=a[isLeap(year)][month-1]){n -= a[isLeap(year)][month-1];month++;if (month>12){ year++; month=1; }}printf("%d-%02d-%02d\n", year,month,day+n);return 0;}int isLeap(int year){if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))return 1;elsereturn 0;}排它平方数小明正看着203879 这个数字发呆。

原来,203879 * 203879 = 41566646641这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。

具有这样特点的6位数还有一个,请你找出它!(1)正确答案。

639172(2)编程思路。

对6位数进行穷举,区间下限为123456,上限为987654。

定义数组used[10]记录数字0~9的使用情况,分离出穷举的6位数的各位x,且置used[x]++,若每个used[x]大于2,则数字x重复出现,不合要求,进行下次穷举。

另外,由于两个6位数相乘结果超出了整型数的表示范围,采用两个数组元素来保存积。

计算6位数i的平方时,将i表示为a*10000+b,这样i的平方等于a*a*100000000+2*a*b*10000+b*b,用数组元素x[1]保存低8位,用x[0]保存高8位,具体方法为:x[1]=x[1]+c%10000*10000;x[0]=x[0]+c/10000;x[0]=x[0]+x[1]/100000000;x[1]=x[1]%100000000;然后再检测x[0]和x[1]中的各位数k是否已出现,即对应的used[k]是否为1。

(3)源程序。

#include <stdio.h>int check(int x,int used[10]){do {if(used[x%10] > 0)return 0;elseused[x % 10]++;}while(x /= 10);return 1;}int checkpower(int x[],int used[10]) {do {if(used[x[0]%10] > 0) {return 0;}} while(x[0]/=10);for (int i=1;i<=8;i++){if(used[x[1]%10] > 0)return 0;x[1]=x[1]/10;}return 1;}int main(){int i,a,b,c,x[2];int k,used[10];for(i=123456; i<=987654; i++){for (k=0;k<=9;k++)used[k]=0;if(!check(i,used))continue;a=i/10000; b=i%10000;x[0]=a*a; x[1]=b*b;c=2*a*b;x[1]=x[1]+c%10000*10000;x[0]=x[0]+c/10000;x[0]=x[0]+x[1]/100000000;x[1]=x[1]%100000000;if(!checkpower(x,used))continue;printf("%d\n",i);}return 0;}振兴中华小明参加了学校的趣味运动会,其中的一个项目是:跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。

一直要跳到“华”字结束。

要求跳过的路线刚好构成“从我做起振兴中华”这句话。

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?(1)答案。

35(2)编程思路。

图中有4行5列共20个格子,定义数组int a[4][5],其中元素a[i][j]保存走到第i行第j 列的格子的方法数。

由于要求跳过的路线刚好构成“从我做起振兴中华”这句话,因此每个格子只能由其正上方或最左边的格子走过来,因此有:a[i][j] = a[i-1][j] + a[i][j-1]; (1≤i≤3,1≤j≤4)初始时,a[0][j] = 1; (0≤i≤3)a[0][j] = 1; (0≤j≤4)(3)源程序。

# include <stdio.h>int main(){int i,j;int a[4][5] = {0};for (i=0; i<4; i++)a[i][0] = 1;for (j=0; j<5; j++)a[0][j] = 1;for (i=1; i<4; i++)for (j=1; j<5; j++)a[i][j] = a[i-1][j] + a[i][j-1];printf("%d\n", a[3][4]);return 0;}颠倒的价牌小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。

其标价都是4位数字(即千元不等)。

小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。

这种价牌有个特点,对一些数字,倒过来看也是合理的数字。

如:1 2 5 6 8 9 0 都可以。

这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!!当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。

有一天,悲剧终于发生了。

某个店员不小心把店里的某两个价格牌给挂倒了。

并且这两个价格牌的电视机都卖出去了!庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。

请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?(1)答案。

9088(2)编程思路。

在0~9这10个数字中,只有0,1,2,5,6,8,9这7个数字(保存到数组num1中)颠倒后有意义,它们颠倒后对应数字为0,1,2,5,9,8,6(保存到数组num2中)。

设a、b、c、d分别表示价牌上4位数字的千位、百位、十位和个位,显然a、d位上的数字不能取0。

对a(1~6)、b(0~6)、c(0~6)、d(1~6)的组合情况进行穷举,找出这些组合情况中价差在-300~-200(亏2百多)的数字保存到数组price1中,价差在800~900(赚8百多)的数字保存到数组price2中。

最后对数组price1和price2中的元素进行两两匹配,找到价差之和等于558的情况。

(3)源程序。

# include <stdio.h>int main(){int num1[7] = {0,1,2,5,6,8,9}, num2[7] = {0,1,2,5,9,8,6};int price1[1000][2], price2[1000][2];int a, b, c, d, cnt1 = 0, cnt2 = 0;for (a = 1; a <=6; a++)for (b = 0; b <=6; b++)for (c = 0; c <=6; c++)for (d = 1; d <=6; d++){int temp1 = num1[a] * 1000 + num1[b] * 100 + num1[c] * 10 + num1[d];int temp2 = num2[d] * 1000 + num2[c] * 100 + num2[b] * 10 + num2[a];if (temp2 - temp1 > -300 && temp2 - temp1 < -200){price1[cnt1][0] = temp1;price1[cnt1][1] = temp2 - temp1;cnt1++;}else if (temp2 - temp1 > 800 && temp2 - temp1 < 900){price2[cnt2][0] = temp1;price2[cnt2][1] = temp2 - temp1;cnt2++;}}for (a = 0; a < cnt1; a++)for (b = 0; b < cnt2; b++){if (price1[a][1] + price2[b][1] == 558)printf("%d , %d\n",price1[a][0],price2[b][0]);}return 0;}前缀判断如下的代码判断needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL。

相关文档
最新文档