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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

蓝桥杯作业1版本2.docx

1、蓝桥杯作业1版本21、 题目描述有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复. 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。 等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“.昨天,我正好喝了一瓶.奉劝大家,开船不喝酒,喝酒别开船.” 请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。 如果有多个可能的答案,请列出所有答案,每个答案占一行。 格式是:人数,人数,. 例如,有一种可能是:20,5,4,2,0穷举不丢人。代码实现:#incl

2、ude using namespace std;int main() int n,a,b,c;/a第三轮的人数,b二轮,c一轮 for(a=2;a=20;a+) for(b=a;b=20;b+) for(c=b;c=20;c+) for(n=c;n=20;n+) if(n*a*b*c=a*b*c+b*c*n+a*c*n+a*b*n&a!=b&b!=c&c!=n) coutn c b a 0endl; return 0;运行结果:2、 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注

3、目。于是有人询问他的年龄,他回答说: “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。答案写在这。代码实现:#include using namespace std;#include;bool f(int n,int m) if(n=10000|n=1000000|m100000) return false; int c10=0; int i=0; while(n) cn%10=1; n/=10; i+; while(m) cm%10=1; m/=10; i+; for(int j=0;j

4、10;j+) if(cj!=1) return false; return true;int main() int a; for(a=11;a=100;a+) if(f(pow(a,3),pow(a,4) coutaendl; coutpow(a,3) pow(a,4)endl; return 0;运行结果:3、 题目描述公交车票价为5角。假设每位乘客只持有两种币值的货币:5角、1元。再假设持有5角的乘客有m人,持有1元的乘客有n人。由于特殊情况,开始的时候,售票员没有零钱可找。我们想知道这m+n名乘客以什么样的顺序购票则可以顺利完成购票过程。显然,m =n的时候,有些情况也不行。比如,第一个

5、购票的乘客就持有1元。下面的程序计算出这m+n名乘客所有可能顺利完成购票的不同情况的组合数目。注意:只关心5角和1元交替出现的次序的不同排列,持有同样币值的两名乘客交换位置并不算做一种新的情况来计数。/m: 持有5角币的人数/n: 持有1元币的人数/返回:所有顺利完成购票过程的购票次序的种类数int f(int m, int n) if(m n) return 0; if(n=0) return 1; return f(m-1,n )+f(m,n-1);555115551551551551555/555111151551115115511小贴士:1. 浮点的非精确比较。不能用= a. 小于一个

6、临界值 b. 转化为整数2. 有理数的高精度表示 注意:舍入规则的细节 有效数字位数3.有理数的整数分数表示法4. IEEE754 规则 特殊的有理数值 NaN Infinite -Infinite 0.0 -0.04、 格子中输出StringInGrid函数会在一个指定大小的格子中打印指定的字符串。要求字符串在水平、垂直两个方向上都居中。如果字符串太长,就截断。如果不能恰好居中,可以稍稍偏左或者偏上一点。下面的程序实现这个逻辑,请填写划线部分缺少的代码。#include #include void StringInGrid(int width, int height, const char*

7、 s) int i,k; char buf1000; strcpy(buf, s); if(strlen(s)width-2) bufwidth-2=0; printf(+); for(i=0;iwidth-2;i+) printf(-); printf(+n); for(k=1; k(height-1)/2;k+) printf(|); for(i=0;iwidth-2;i+) printf( ); printf(|n); printf(|); printf(%*s%s%*s, (width-2-strlen(buf)/2,buf,(width-2-strlen(buf)/2,); /填空

8、printf(|n); for(k=(height-1)/2+1; kheight-1; k+) printf(|); for(i=0;iwidth-2;i+) printf( ); printf(|n); printf(+); for(i=0;iwidth-2;i+) printf(-); printf(+n); int main() StringInGrid(20,6,abcd1234); return 0;对于题目中数据,应该输出:+-+| | abcd1234 | | |+-+(如果出现对齐问题,参看【图1.jpg】)注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。5、

9、阶乘位数9的阶乘等于:362880它的二进制表示为:1011000100110000000这个数字共有19位。请你计算,9999 的阶乘的二进制表示一共有多少位?注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等)代码实现:#include using namespace std;#define pi 3.14159#includeint main()/运用斯特林公式 int n,sum; cinn; if(n=1|n=2) sum=n; else sum=(int)(n*log(n)-n+0.5*log(2*n*pi)/log(2)+1; coutsumendl; return

10、 0;运行结果:6、 题目描述 古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念! 罗马数字的表示主要依赖以下几个基本符号: I 1 V 5 X 10 L 50 C 100 D 500 M 1000 这里,我们只介绍一下1000以内的数字的表示法。 单个符号重复多少次,就表示多少倍。最多重复3次。比如:CCC表示300 XX表示20,但150并不用LLL表示,这个规则仅适用于I X C M。 如果相邻级别的

11、大单位在右,小单位在左,表示大单位中扣除小单位。比如:IX表示9 IV表示4 XL表示40 更多的示例参见下表,你找到规律了吗?I,1 II,2III,3IV,4V,5VI,6VII,7VIII,8IX,9 X,10XI,11XII,12XIII,13XIV,14XV,15XVI,16XVII,17XVIII,18XIX,19XX,20XXI,21XXII,22XXIX,29XXX,30XXXIV,34XXXV,35XXXIX,39XL,40L,50LI,51LV,55LX,60LXV,65LXXX,80XC,90XCIII,93XCV,95XCVIII,98XCIX,99C,100CC,20

12、0CCC,300CD,400D,500DC,600DCC,700DCCC,800CM,900CMXCIX,999 本题目的要求是:请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。 输入格式是:第一行是整数n,表示接下来有n个罗马数字(n100)。以后每行一个罗马数字。罗马数字大小不超过999。 要求程序输出n行,就是罗马数字对应的十进制数据。 例如,用户输入:3LXXXXCIIIDCCII 则程序应该输出:8093702-遇到 I sum += 1遇到 X sum += 10遇到 V sum += 5.if(包含 IX) sum -= 2; if(包含 IV) sum -=

13、2;if(包含 XC) sum -= 20;.代码实现:#include #include #include using namespace std;int Roman(char a) switch(a) case I: return 1; break; case V: return 5; break; case X: return 10; break; case L: return 50; break; case C: return 100; break; case D: return 500; break; case M: return 1000; break; void reduce(i

14、nt &sum,char a,char b) if(a=I&b=V) sum-=2; else if(a=I&b=X) sum-=2; else if(a=X&b=L) sum-=20; else if(a=X&b=C) sum-=20; else if(a=C&b=D) sum-=200; else if(a=C&b=M) sum-=200;int f(char a100) int sum=0; for(int i=0;ai!=0;i+) sum+=Roman(ai); if(ai+1!=0) reduce(sum,ai,ai+1); return sum;int main() int n;

15、 int b100; char a100; cinn; for(int i=0;ia; bi=f(a); for(int i=0;in;i+) coutbiendl; return 0;运行结果:7、 题目描述A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束: 1. 如果A参加,B也参加; 2. 如果C不参加,D也不参加; 3. A和C中只能有一个人参加; 4. B和D中有且仅有一个人参加; 5. D、E、F、G、H 中至少有2人加; 6. C和G或者都参加,或者都不参加; 7. C、E、G、I中至多只能2

16、人参加 8. 如果E参加,那么F和G也都参加。 9. 如果F参加,G、H就不能参加 10. 如果I、J都不参加,H必须参加请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。比如:C D G J就是一种可能的情况。多种情况的前后顺序不重要技巧: 参加为1,不参加为0,不用boolean类型 3 if(a+c=1) 4 if(b+d=1)代码实现:#include #include #include using namespace std;int main() for(int A=0;A=1;A+) for(i

17、nt B=0;B=1;B+) if(A=1&B=0) continue; for(int C=0;C=1;C+) if(A+C=2) continue; for(int D=0;D=1;D+) if(C=0&D=1) continue; if(B+D!=1) continue; for(int E=0;E=1;E+) for(int F=0;F=1;F+) for(int G=0;G=1;G+) if(C+G=1) continue; for(int H=0;H=1;H+) if(D+E+F+G+H2) continue; if(F=1&G+H!=0) continue; for(int I=

18、0;I2) continue; if(E=1&F+G!=2) continue; for(int J=0;J=1;J+) if(I+J+H=0) continue; if(A) coutA ; if(B) coutB ; if(C) coutC ; if(D) coutD ; if(E) coutE ; if(F) coutF ; if(G) coutG ; if(H) coutH ; if(I) coutI ; if(J) coutJ ; coutendl; return 0;运行结果:8、 啤酒和饮料啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。我们还知道

19、他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。注意:答案是一个整数。请通过浏览器提交答案。不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。代码实现:#include #include using namespace std;int main() int a=23,b=19,n=823; for(int i=1;in/a;i+) for(int j=i;jn/b;j+) if(i*23+j*19=823) cout啤酒:i 饮料:jendl; return 0;运行结果:9、 题目描述匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔

20、需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练! 某批警察叔叔正在进行智力训练: 1 2 3 4 5 6 7 8 9 = 110; 请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。 请你利用计算机的优势,帮助警察叔叔快速找到所有答案。 每个答案占一行。形如:12+34+56+7-8+9123+4+5+67-89. 已知的两个答案可以输出,但不计分。 各个答案的前后顺序不重要。 注意: 请仔细调试!您

21、的程序只有能运行出正确结果的时候才有机会得分! 请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 请不要使用package语句。源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。代码实现:#include #include #include using namespace std;void print(int a10) int b10; for(int i=0;i10;i+) bi=i; for(int i=1;i=9;i+) couti; if(ai=1) cout+; else if(ai=2)

22、 cout-; cout=110=0;i-) if(ai=1|i=0) for(int j=i+1;j=k;j+) x=x*10+j; sum+=x; x=0;k=i; else if(ai=2) for(int j=i+1;j=k;j+) x=x*10+j; sum-=x; x=0;k=i; if(sum=110) print(a); else for(int i=1;i=3;i+) an=i; f(a,n+1); an=3; int main() int a10=0;/9个符号位 a9=3;/9后的默认为空 1+ 2- 3空 f(a,1); return 0;运行结果:10、消除尾一下面的

23、代码把一个整数的二进制表示的最右边的连续的1全部变成0如果最后一位是0,则原数字保持不变。如果采用代码中的测试数据,应该输出:00000000000000000000000001100111 0000000000000000000000000110000000000000000000000000000000001100 00000000000000000000000000001100请仔细阅读程序,填写划线部分缺少的代码。#include void f(int x) int i; for(i=0; i(31-i)&1); printf( ); x = (x+1)&x; for(i=0; i(3

24、1-i)&1); printf(n); int main() f(103); f(12); return 0;注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。11、一步之遥从昏迷中醒来,小明发现自己被关在X星球的废矿车里。矿车停在平直的废弃的轨道上。他的面前是两个按钮,分别写着“F”和“B”。小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。按F,会前进97米。按B会后退127米。透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。或许,通过多次操作F和B可以办到。矿车上的动力已经不太足,黄色的警示灯在默

25、默闪烁.每次进行 F 或 B 操作都会消耗一定的能量。小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方1米远的地方。请填写为了达成目标,最少需要操作的次数。注意,需要提交的是一个整数,不要填写任何无关内容(比如:解释说明等)代码实现:#include #include #include using namespace std;int main() int n=1000; for(int i=1;i1000;i+) for(int j=1;j1000;j+) if(i*97+1=127*j) if(i+jn) n=i+j; coutn; return 0;运行结果:12、题目描述有N个人参加100米短跑比赛。跑道为8条。程序的任务是按照尽量使每组的人数相差最少的原则分组。例如:N=8时,分成1组即可。N=9时,分成2组:一组5人,一组4人。N=25时,分4组:7、6、6、6。请编程计算分组数字。要求从键盘输入一个正整数(1100之间,不必考虑输入错误的情况),表示参赛的人数。程序输出每个组的人数。从大到小顺序输出,每个数字一行。比如,用户输入:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1