1、蓝桥杯cc省赛试题及答案解析2016蓝桥杯c-c+B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),.如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。答案:171700#include int main() int a101 =0; for(int i = 1 ; i 101 ; i +) ai = ai-1 + i; int ans = 0; for(int j = 1 ; j 101 ; j +)
2、 ans += aj; printf(%dn,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
3、 = 0; for(int i = start; i = end; i +) sum += i; if( sum = 236) printf(start : %d end : %dn,start,end); return 0; 第三题 凑算式 B DEFA + - + - = 10 C GHI (如果显示有问题,可以参见【图】) 这个算式中AI代表19的数字,不同的字母代表不同的数字。比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。答案:29#include int
4、 ans = 0; int num10; bool visit10; void Solve() double sum = num0 + (double)num1 / num2 + (double)(num3*100+num4*10+num5)/(num6*100+num7*10+num8); if(sum = 10) ans +; void dfs(int index) if(index = 9) Solve(); return ; for(int i = 1 ; i 10 ; i +) if(!visiti) visiti = true; numindex = i; dfs(index+1)
5、; visiti = false; int main() dfs(0); printf(%dn,ans); return 0; 第四题快速排序排序在各种场合经常被用到。快速排序是十分常用的高效率的算法。其思想是:先选一个“标尺”,用它把整个队列过一遍筛子,以保证:其左边的元素都不大于它,其右边的元素都不小于它。这样,排序问题就被分割为两个子区间。再分别对子区间排序就可以了。下面的代码是一种实现,请分析并填写划线部分缺少的代码。#include void swap(int a, int i, int j) int t = ai; ai = aj; aj = t;int partition(int
6、 a, int p, int r) int i = p; int j = r + 1; int x = ap; while(1) while(ir & a+ix); if(i=j) break; swap(a,i,j); _; return j;void quicksort(int a, int p, int r) if(pr) int q = partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); int main() int i; int a = 5,13,6,24,2,8,19,27,6,12,1,17; int N = 12;
7、 quicksort(a, 0, N-1); for(i=0; iN; i+) printf(%d , ai); printf(n); return 0;注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。答案:swap(a,p,j)第五题抽签X星球要派出一个5人组成的观察团前往W星。其中:A国最多可以派出4人。B国最多可以派出2人。C国最多可以派出2人。.那么最终派往W星的观察团会有多少种国别的不同组合呢?下面的程序解决了这个问题。数组a 中既是每个国家可以派出的最多的名额。程序执行结果为:DEFFFCEFFFCDFFFCDEFFCCFFFCCEFFCCDFFCCDEFBEFFFB
8、DFFFBDEFFBCFFFBCEFFBCDFFBCDEF.(以下省略,总共101行)#include #define N 6#define M 5#define BUF 1024void f(int a, int k, int m, char b) int i,j; if(k=N) bM = 0; if(m=0) printf(%sn,b); return; for(i=0; i=ak; i+) for(j=0; ji; j+) bM-m+j = k+A; _; 图.” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI
9、C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。答案:方法一:#include #include int main() int n; int flag = false; scanf(%d,&n); for(int i = 0 ; i * i = n ; i +) for(int j = 0 ; j * j = n ; j +) for(int k = 0 ; k * k = n ; k +) int temp = n - i*i - j*
10、j - k*k; double l = sqrt(double) temp); if(l = (int)l ) printf(%d %d %d %dn,i,j,k,(int)l); flag = true; break; if(flag)break; if(flag)break; return 0; 方法二:#include #include int mpt5000010 =0; .” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的
11、函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。第十题最大比例X星球的某个大奖赛设了M级奖励。每个级别的奖金是一个正整数。并且,相邻的两个级别间的比例是个固定值。也就是说:所有级别的奖金数构成了一个等比数列。比如:16,24,36,54其等比值为:3/2现在,我们随机调查了一些获奖者的奖金数。请你据此推算可能的最大的等比值。输入格式:第一行为数字 N (0N100),表示接下的一行包含N个正整数第二行N个正整数Xi(Xi1 000 000 000 000),用空格分开。每个整数表示调查到的某人的奖金数额要求输出:一个形如A/
12、B的分数,要求A、B互质。表示可能的最大比例系数测试数据保证了输入格式正确,并且最大比例是存在的。例如,输入:31250 200 32程序应该输出:25/4再例如,输入:43125 32 32 200程序应该输出:5/2再例如,输入:33888 524288 2程序应该输出:4/1资源约定:峰值内存消耗 256MCPU消耗 3000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入.” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有
13、依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。答案:#include #include #include using namespace std; #define LL long long struct fs LL up,down; ; int n; LL arr110; fs Fs110; bool cmp(LL a,LL b) return a b; LL Gcd(LL a,LL b) if( b = 0 )return a; return Gcd(b,a%b); LL Get(LL a, LL b) if( a
14、 b) a = b = a = b; LL v30; queueteam; if( a = b | a / b = a) return b; v0 = a, v1 = b; v2 = a / b; int top = 3,i,j; (a/b); while() LL now = (); (); for(i = 0 ; i now) ? vi / now : now / vi; bool find = false; for(j = 0 ; j top ; j +) if( vj = temp) find = true; if(find = true) continue; (temp); vtop
15、+ = temp; LL ans = v0; for(i = 0 ; i top ; i +) if(vi != 1) ans = vi; break; for(i = 0 ; i top ; i +) if( vi ans & vi != 1) ans = vi; return ans; int main() int i,j; scanf(%d,&n); for(i = 0 ; i n ; i +) scanf(%lld,&arri); sort(arr,arr+n,cmp); int top = 1; for(i = 1; i n ; i +) if(arri != arri-1) arrtop+ = arri; n = top; for(i = 0 ; i n - 1; i +) LL gcd = Gcd(arri,arri+1); Fsi.up = arri / gcd; Fsi.down = arri+1 / gcd; LL x = Fs0.up; for(i = 0 ; i n - 1 ; i +) x = Get(x,Fsi.up); LL y = Fs0.down; for(i = 0 ; i n - 1; i +) y = Get(y,Fsi.down); printf(%lld/%lldn,x,y); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1