ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:63.43KB ,
资源ID:10262472      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10262472.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蓝桥杯cc++省赛试题卷与答案.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

蓝桥杯cc++省赛试题卷与答案.docx

1、蓝桥杯cc+省赛试题卷与答案2016蓝桥杯c-c+B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),.如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的容或说明性文字。答案:171700#includeint 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 +) a

2、ns += aj; printf(%dn,ans); return 0; 第二题生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。请问,他从多少岁开始过生日party的?请填写他开始过生日party的年龄数。注意:你提交的应该是一个整数,不要填写任何多余的容或说明性文字。答案:26#includeint main() int start,end; for(start = 1 ; start 236 ; start +) for( end = start ; end 236 ; end + ) int sum = 0;

3、 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(如果显示有问题,可以参见【图1.jpg】) 这个算式中AI代表19的数字,不同的字母代表不同的数字。比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的容或说明性文字。答案:29#includeint an

4、s = 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); v

5、isiti = 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 a,

6、 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; qu

7、icksort(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 中既是每个国家可以派出的最多的名额。程序执行结果为:DEFFFCEFFFCDFFFCDEFFCCFFFCCEFFCCDFFCCDEFBEFFFBDFFF

8、BDEFFBCFFFBCEFFBCDFFBCDEF.(以下省略,总共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; _; /填空位置 int main() int aN = 4,2,2,1,1,3; char bBUF; f(a,0,M,b); return

9、0;仔细阅读代码,填写划线部分缺少的容。注意:不要填写任何已有容或说明性文字。答案f(a,k+1,m-j,b)或f(a,k+1,m-i,b)第六题方格填数如下的10个格子 +-+-+-+ | | | |+-+-+-+-+| | | | |+-+-+-+-+| | | |+-+-+-+(如果显示有问题,也可以参看【图1.jpg】)填入09的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的容或说明性文字。图1.jpg答案是:1580#include #include int fla

10、g34; /表示哪些可以填数 int mpt34; /填数 bool visit10; int ans = 0; void init() /初始化 int i,j; for(i = 0 ; i 3 ; i +) for(j = 0 ; j 4 ; j +) flagij = 1; flag00 = 0; flag23 = 0; void Solve() int dir82 = 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 +) for(int j = 0 ; j 4; j +) /

11、判断每个数周围是否满足 if(flagij = 0)continue; for( int k = 0 ; k 8 ; k +) int x,y; x = i + dirk0; y = j + dirk1; if(x = 3 | y = 4 | flagxy = 0) continue; if(abs(mptxy - mptij) = 1) book = false; if(book) ans +; void dfs(int index) int x,y; x = index / 4; y = index % 4; if( x = 3) Solve(); return; if(flagxy) f

12、or(int i = 0 ; i 10 ; i +) if(!visiti) visiti = true; mptxy = i; dfs(index+1); visiti = false; else dfs(index+1); int main() init(); dfs(0); printf(%dn,ans); return 0; 第七题剪邮票如【图1.jpg】, 有12连在一起的12生肖的邮票。现在你要从中剪下5来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的

13、整数。注意:你提交的应该是一个整数,不要填写任何多余的容或说明性文字。答案:116#include #include int mpt34; int mpt_visit34; int num6; int have13; int visit13; int ans = 0; int Count = 0; void init() int k = 1; for(int i = 0 ; i 3 ; i +) for(int j = 0 ; j 4 ; j +) mptij = k; k +; int dir42 = 0,1,0,-1,-1,0,1,0; /判断五个数是否能连在一起 void dfs_fin

14、d(int x,int y) for(int i = 0 ; i 4 ; i+) int tx,ty; tx = x + diri0; ty = y + diri1; if(tx = 3 | ty = 4) continue; if(havempttxty = 0 | mpt_visittxty)continue; mpt_visittxty = 1; Count +; dfs_find(tx,ty); void Solve() int i; memset(have,0,sizeof(have); memset(mpt_visit,0,sizeof(mpt_visit); for(i = 1;

15、 i 6 ; i +) havenumi = 1; for(i = 0 ; i 12 ; i +) int x,y; x = i / 4; y = i % 4; if(havemptxy) Count = 1; mpt_visitxy =1; dfs_find(x,y); break; if(Count = 5) ans +; /创建5个数的组合 void dfs_creat(int index) if(index = 6) Solve(); return; for(int i = numindex-1 + 1; i 13 ; i +) if(!visiti) visiti = true; n

16、umindex = i; dfs_creat(index+1); visiti = false; int main() init(); dfs_creat(1); printf(%dn,ans); return 0; 第八题方和方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 02 + 02 + 12 + 227 = 12 + 12 + 12 + 22(符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 = a = b = c = d并对所有的可能表示法按 a,b

17、,c,d 为联合主键升序排列,最后输出第一个表示法程序输入为一个正整数N (N5000000)要求输出4个非负整数,按从小到大排序,中间用空格分开例如,输入:5则程序应该输出:0 0 1 2再例如,输入:12则程序应该输出:0 2 2 2再例如,输入:773535则程序应该输出:1 1 267 838资源约定:峰值存消耗 256MCPU消耗 3000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入.” 的多余容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函

18、数。注意: 所有依赖的函数必须明确地在源文件中 #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*j - k*k; double l = sqrt(double)

19、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; /mpti = 1表示i 能够用两个完全平方数相加而得。 int n; void init() for(int i = 0 ; i*i = n ; i +) for(int j = 0 ; j*j =n ; j +) if(i*i+j*j = n) mpti*i+j*j = 1;

20、int main() int flag = false; scanf(%d,&n); init(); for(int i = 0 ; i * i = n ; i +) for(int j = 0 ; j * j = n ; j +) if(mptn - i*i - j*j = 0) continue; /如果剩下的差用两个完全平方数不能组合出来就不继续 for(int k = 0 ; k * k = n ; k +) int temp = n - i*i - j*j - k*k; double l = sqrt(double) temp); if(l = (int)l ) printf(%d

21、%d %d %dn,i,j,k,(int)l); flag = true; break; if(flag)break; if(flag)break; return 0; 第九题交换瓶子有N个瓶子,编号 1 N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行: 一个正整数N(N10000), 表示瓶子的数目第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。输出数据为一行一个正整数,表示至少交

22、换多少次,才能完成排序。例如,输入:53 1 2 5 4程序应该输出:3再例如,输入:55 4 3 2 1程序应该输出:2资源约定:峰值存消耗 256MCPU消耗 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入.” 的多余容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。第十题最大比例X星球的某个大奖赛设了M级

23、奖励。每个级别的奖金是一个正整数。并且,相邻的两个级别间的比例是个固定值。也就是说:所有级别的奖金数构成了一个等比数列。比如:16,24,36,54其等比值为:3/2现在,我们随机调查了一些获奖者的奖金数。请你据此推算可能的最大的等比值。输入格式:第一行为数字 N (0N100),表示接下的一行包含N个正整数第二行N个正整数Xi(Xi1 000 000 000 000),用空格分开。每个整数表示调查到的某人的奖金数额要求输出:一个形如A/B的分数,要求A、B互质。表示可能的最大比例系数测试数据保证了输入格式正确,并且最大比例是存在的。例如,输入:31250 200 32程序应该输出:25/4再

24、例如,输入:43125 32 32 200程序应该输出:5/2再例如,输入:3549755813888 524288 2程序应该输出:4/1资源约定:峰值存消耗 256MCPU消耗 3000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入.” 的多余容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。答案:#include

25、 #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 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; team

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2