2016年第七届蓝桥杯省赛试题及详解(Java本科B组)
第一题:煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
。。。。
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:171700publicclassMain{publicstaticvoidmain(String〔〕args){inta1,b2,sum1;for(inti2;i100;i){sum(ab);ab;b;}System。out。println(sum);}}
第二题:生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他刚开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:26importjava。util。Scanner;publicclassMain{publicstaticvoidmain(String〔〕args){ScannerinnewScanner(System。in);for(inti1;i50;i){intsum0;for(intji;j50;j){sumj;if(sum236){System。out。println(i);j100;退出循环i100;}elseif(sum236){break;}else{continue;}}}}}
第三题:凑算式
BDEF
A10
CGHI
(如果显示有问题,可以参见【图1。jpg】)
这个算式中AI代表19的数字,不同的字母代表不同的数字。
比如:
683952714就是一种解法,
531972486是另一种解法。
这个算式一共有多少种解法?
注意:你提交的应该是个整数,不要填写任何多余的内容或说明性文字。
ABCDE10ACEBEDC10CE,除法可能会有浮点误差,所以先转换
publicclassMain{publicstaticvoidmain(String〔〕args){dfs(0);System。out。println(ans);}staticint〔〕anewint〔〕{1,2,3,4,5,6,7,8,9};staticintans0;staticvoiddfs(intm){if(m9){a〔0〕a〔1〕a〔2〕a〔3〕a〔4〕a〔5〕(a〔6〕a〔7〕a〔8〕)10ABCDE10ACEBEDC10CEintAa〔0〕;intBa〔1〕;intCa〔2〕;intD100a〔3〕10a〔4〕a〔5〕;intE100a〔6〕10a〔7〕a〔8〕;if(ACEBEDC10CE){ans;for(inti0;i9;i)System。out。print(a〔i〕);System。out。println();}return;}for(intim;i9;i){swap(m,i);dfs(m1);swap(m,i);}}staticvoidswap(inti,intj){intta〔i〕;a〔i〕a〔j〕;a〔j〕t;}}
第二种方法:importjava。util。Scanner;publicclassMain{publicstaticvoidmain(Stringargs〔〕){ScannerinnewScanner(System。in);intsum0;for(inta1;a9;a)for(intb1;b9;b){if(ba)continue;for(intc1;c9;c){if(cacb)continue;for(intd1;d9;d){if(dadbdc)continue;for(inte1;e9;e){if(eaebeced)continue;for(intf1;f9;f){if(fafbfcfdfe)continue;for(intg1;g9;g){if(gagbgcgdgegf)continue;for(inth1;h9;h){if(hahbhchdhehfhg)continue;for(inti1;i9;i){if(iaibicidieifigih)continue;要把其中一个整数先乘以1。0转化成浮点数if((a(b1。0c)(fe10d100)1。0(ih10g100))10){sum;}}}}}}}}}System。out。println(sum);}}
第四题:分小组
9名运动员参加比赛,需要分3组进行预赛。
有哪些分组的方案呢?
我们标记运动员为王A,B,C,。。。I
下面的程序列出了所有的分组方法。
该程序的正常输出为:
ABCDEFGHI
ABCDEGFHI
ABCDEHFGI
ABCDEIFGH
ABCDFGEHI
ABCDFHEGI
ABCDFIEGH
ABCDGHEFI
ABCDGIEFH
ABCDHIEFG
ABCEFGDHI
ABCEFHDGI
ABCEFIDGH
ABCEGHDFI
ABCEGIDFH
ABCEHIDFG
ABCFGHDEI
ABCFGIDEH
ABCFHIDEG
ABCGHIDEF
ABDCEFGHI
ABDCEGFHI
ABDCEHFGI
ABDCEIFGH
ABDCFGEHI
ABDCFHEGI
ABDCFIEGH
ABDCGHEFI
ABDCGIEFH
ABDCHIEFG
ABDEFGCHI
。。。。。(以下省略,总共560行)publicclassMain{publicstaticStringremain(int〔〕a){Strings;for(inti0;ia。length;i){if(a〔i〕0)s(char)(iA);}returns;}publicstaticvoidf(Strings,int〔〕a){for(inti0;ia。length;i){if(a〔i〕1)continue;a〔i〕1;for(intji1;ja。length;j){if(a〔j〕1)continue;a〔j〕1;for(intkj1;ka。length;k){if(a〔k〕1)continue;a〔k〕1;System。out。println();填空位置a〔k〕0;}a〔j〕0;}a〔i〕0;}}publicstaticvoidmain(String〔〕args){int〔〕anewint〔9〕;a〔0〕1;for(intb1;ba。length;b){a〔b〕1;for(intcb1;ca。length;c){a〔c〕1;StringsA(char)(bA)(char)(cA);f(s,a);a〔c〕0;}a〔b〕0;}}}答案:s(char)(iA)(char)(jA)(char)(kA)remain(a)
第五题:抽签
X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
。。。。
那么最终派往W星的观察团会有多少种国别的不同组合呢?
下面的程序解决了这个问题。
数组a〔〕中国是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF
。。。。
(以下省略,总共101行)publicclassA{publicstaticvoidf(int〔〕a,intk,intn,Strings){if(ka。length){if(n0)System。out。println(s);return;}Strings2s;for(inti0;ia〔k〕;i){;填空位置s2(char)(kA);}}publicstaticvoidmain(String〔〕args){int〔〕a{4,2,2,1,1,3};f(a,0,5,);}}答案:f(a,k1,ni,s2);
第六题:方格填数
如下的10个格子
(如果显示有问题,也可以参看【图1。jpg】)
填入09的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。importjava。util。Arrays;publicclassMain{staticintcnt0;staticint〔〕a{0,1,2,3,4,5,6,7,8,9};publicstaticvoidmain(String〔〕args){p(0);System。out。println(cnt);}publicstaticvoidp(intk){if(k10){booleanfcheck();if(f){cnt;}return;}for(intik;ia。length;i){intta〔i〕;a〔i〕a〔k〕;a〔k〕t;p(k1);ta〔i〕;a〔i〕a〔k〕;a〔k〕t;}}privatestaticbooleancheck(){TODOAutogeneratedmethodstubif(Math。abs(a〔0〕a〔1〕)1Math。abs(a〔0〕a〔3〕)1Math。abs(a〔0〕a〔4〕)1Math。abs(a〔0〕a〔5〕)1Math。abs(a〔1〕a〔2〕)1Math。abs(a〔1〕a〔4〕)1Math。abs(a〔1〕a〔5〕)1Math。abs(a〔1〕a〔6〕)1Math。abs(a〔2〕a〔5〕)1Math。abs(a〔2〕a〔6〕)1Math。abs(a〔3〕a〔4〕)1Math。abs(a〔3〕a〔7〕)1Math。abs(a〔3〕a〔8〕)1Math。abs(a〔4〕a〔5〕)1Math。abs(a〔4〕a〔7〕)1Math。abs(a〔4〕a〔8〕)1Math。abs(a〔4〕a〔9〕)1Math。abs(a〔5〕a〔6〕)1Math。abs(a〔5〕a〔8〕)1Math。abs(a〔5〕a〔9〕)1Math。abs(a〔6〕a〔9〕)1Math。abs(a〔7〕a〔8〕)1Math。abs(a〔8〕a〔9〕)1)returnfalse;returntrue;}}
第二种方法:publicclassMain{publicstaticvoidmain(String〔〕args){dfs(0);System。out。println(ans);}staticint〔〕anewint〔〕{0,1,2,3,4,5,6,7,8,9};staticintans0;staticvoiddfs(intm){if(m10){if(a〔0〕a〔1〕1a〔0〕a〔1〕1a〔0〕a〔4〕1a〔0〕a〔4〕1a〔0〕a〔3〕1a〔0〕a〔3〕1a〔0〕a〔5〕1a〔0〕a〔5〕1)return;if(a〔1〕a〔2〕1a〔1〕a〔2〕1a〔1〕a〔5〕1a〔1〕a〔5〕1a〔1〕a〔4〕1a〔1〕a〔4〕1a〔1〕a〔6〕1a〔1〕a〔6〕1)return;if(a〔2〕a〔6〕1a〔2〕a〔6〕1a〔2〕a〔5〕1a〔2〕a〔5〕1)return;if(a〔3〕a〔4〕1a〔3〕a〔4〕1a〔3〕a〔7〕1a〔3〕a〔7〕1a〔3〕a〔8〕1a〔3〕a〔8〕1)return;if(a〔4〕a〔5〕1a〔4〕a〔5〕1a〔4〕a〔8〕1a〔4〕a〔8〕1a〔4〕a〔7〕1a〔4〕a〔7〕1a〔4〕a〔9〕1a〔4〕a〔9〕1)return;if(a〔5〕a〔6〕1a〔5〕a〔6〕1a〔5〕a〔8〕1a〔5〕a〔8〕1a〔5〕a〔9〕1a〔5〕a〔9〕1)return;if(a〔6〕a〔9〕1a〔6〕a〔9〕1a〔7〕a〔8〕1a〔7〕a〔8〕1a〔8〕a〔9〕1a〔8〕a〔9〕1)return;for(inti0;i9;i)System。out。print(a〔i〕);System。out。println();ans;return;}for(intim;i10;i){swap(m,i);dfs(m1);swap(m,i);}}staticvoidswap(inti,intj){intta〔i〕;a〔i〕a〔j〕;a〔j〕t;}}
第七题:剪邮票
如【图1。jpg】,有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)
比如,【图2。jpg】,【图3。jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。importjava。util。Arrays;importjava。util。HashSet;publicclassMain{publicstaticvoidmain(String〔〕args){for(inti1;i12;i){for(intji1;j12;j){for(intkj1;k12;k){for(intxk1;x12;x){for(intyx1;y12;y){vis〔i〕vis〔j〕vis〔k〕vis〔x〕vis〔y〕true;t0;dfs(i);if(t5)ans;vis〔i〕vis〔j〕vis〔k〕vis〔x〕vis〔y〕false;}}}}}System。out。println(ans);}staticchar〔〕anewchar〔〕{A,B,C,D,E,F,G,H,I,J,K,L};staticHashSetStringsetnewHashSet();staticboolean〔〕visnewboolean〔13〕;staticintans0;staticintt0;staticvoiddfs(intx){vis〔x〕false;t;if(x!1x!5x!9vis〔x1〕)dfs(x1);if(x!4x!8x!12vis〔x1〕)dfs(x1);if(x!1x!2x!3x!4vis〔x4〕)dfs(x4);if(x!9x!10x!11x!12vis〔x4〕)dfs(x4);}}
第八题:四平方和
四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。
比如:
502021222
712121222
(符号表示乘方的意思)
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0abcd
并对所有的可能表示法案a,b,c,d为联合主键升序排列,最后输出第一个表示法
程序输入为一个正整数N(N5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开
例如,输入:
5hr则程序应该是输出:
0012
再例如,输入:
12hr则程序应该输出:
0222
再例如,输入:
773535hr则程序应该输出:
11267838
资源约定:
峰值内存消耗(含虚拟机)256M
CPU消耗3000ms
请严格按要求输出,不要画蛇添足地打印类似:请您输入。。。的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1。7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理importjava。util。Scanner;publicclassMain{publicstaticvoidmain(String〔〕args){ScannerinnewScanner(System。in);intnin。nextInt();for(inti0;iin;i)for(intji;jjnii;j)for(intxj;xxniijj;x)for(intyx;yyniijjxx;y)if(iijjxxyyn){System。out。println(ijxy);return;}}}
第九题:足球博弈
两个人玩取球的游戏。
一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目。
如果无法继续取球,则游戏结束。
此时,持有奇数个球的一方获胜。
如果两人都是奇数,则为平局。
假设双方都采用最聪明的取法,
第一个取球的人一定能赢吗?
试编程解决这个问题。
输入格式:
第一行3个正整数n1n2n3,空格分开,表示每次可取的数目(0n1,n2,n3100)
第二行5个正整数x1x2。。。x5,空格分开,表示5局的初始球数(0xi1000)
输出格式:
一行5个字符,空格分开。分别表示每局先取球的人能否获胜。
能获胜则输出,
次之,如有办法逼平对手,输出0,
无论如何都会输,则输出
例如,输入:
123
12345
程序应该输出:
00
再例如,输入:
145
1011121315
程序应该输出:
00
再例如,输入:
235
7891011
程序应该输出:
0000
资源约定:
峰值内存消耗(含虚拟机)256M
CPU消耗3000ms
请严格按要求输出,不要画蛇添足地打印类似:请您输入。。。的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1。7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。importjava。util。Arrays;importjava。util。Scanner;publicclassMain{privatestaticint〔〕n;publicstaticvoidmain(String〔〕args){ScannerscnewScanner(System。in);nnewint〔3〕;for(inti0;i3;i){n〔i〕sc。nextInt();}Arrays。sort(n);排序for(inti0;i5;i){intnumsc。nextInt();charresf(num,0,0);System。out。print(res);}System。out。println();}staticchar〔〕〔〕〔〕cachenewchar〔1000〕〔2〕〔2〕;参数代表着当前取球人面临的局面paramnum球的总数paramme我方持有的数目我方数目的奇偶性paramyou对手持有的数目对方数目的奇偶性returnprivatestaticcharf(intnum,intme,intyou){if(numn〔0〕)不够取{if((me1)1(you1)0)return;elseif((me1)0(you1)1)return;elsereturn0;}if(cache〔num〕〔me〕〔you〕!)returncache〔num〕〔me〕〔you〕;booleanpingfalse;for(inti0;i3;i){if(numn〔i〕){charresf(numn〔i〕,you,(n〔i〕1)0?me:(1me));注意此处,传递me和you的奇偶性if(res){cache〔num〕〔me〕〔you〕;return;}if(res0)pingtrue;}}如果能走到第这行,说明不存在对手输的情况,那么是否存在平的情况if(ping){cache〔num〕〔me〕〔you〕0;return0;}else{cache〔num〕〔me〕〔you〕;return;}}}
第十题:压缩变换
小明最近在研究压缩算法。
他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。
然而,要使数值很小是一个挑战。
最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。
变换的过程如下:
从左到右枚举序列,每枚举到一个数字,如果这个数字没有出现过,刚将数字变换成它的相反数,如果数字出现过,则看它在原序列中最后的一次出现后面(且在当前数前面)出现了几种数字,用这个种类数替换原来的数字。
比如,序列(a1,a2,a3,a4,a5)(1,2,2,1,2)在变换过程为:
a1:1未出现过,所以a1变为1;
a2:2未出现过,所以a2变为2;
a3:2出现过,最后一次为原序列的a2,在a2后、a3前有0种数字,所以a3变为0;
a4:1出现过,最后一次为原序列的a1,在a1后、a4前有1种数字,所以a4变为1;
a5:2出现过,最后一次为原序列的a3,在a3后、a5前有1种数字,所以a5变为1。
现在,给出原序列,请问,按这种变换规则变换后的序列是什么。
输入格式:
输入第一行包含一个整数n,表示序列的长度。
第二行包含n个正整数,表示输入序列。
输出格式:
输出一行,包含n个数,表示变换后的序列。
例如,输入:
5hr12212
程序应该输出:
12011
再例如,输入:
12hr112323122231
程序应该输出:
102311220022
数据规模与约定
对于30的数据,n1000;
对于50的数据,n30000;
对于100的数据,1n100000,1ai109
资源约定:
峰值内存消耗(含虚拟机)256M
CPU消耗3000ms
请严格按要求输出,不要画蛇添足地打印类似:请您输入。。。的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1。7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。importjava。util。HashSet;importjava。util。Scanner;publicclassMain{staticHashSetIntegersetnewHashSet();publicstaticvoidmain(String〔〕args){ScannerinnewScanner(System。in);intnin。nextInt();int〔〕anewint〔n1〕;int〔〕bnewint〔n1〕;int〔〕prenewint〔n1〕;for(inti1;in;i){a〔i〕in。nextInt();intji1;while(j0a〔j〕!a〔i〕)j;pre〔i〕j;}for(inti1;in;i){if(pre〔i〕0)b〔i〕a〔i〕;else{set。clear();for(intjpre〔i〕1;ji;j)set。add(a〔j〕);b〔i〕set。size();}}for(inti1;in;i)if(i!n)System。out。print(b〔i〕);elseSystem。out。println(b〔i〕);}
我从事互联网行业几十年,主要的研究方向是大数据,人工智能,物联网领域,感兴趣的朋友可以关注我,也可以在评论区留言,大家一起交流和沟通
如何查询iPhone激活和保修时间,是否是正品?我知道很多人买完手机以后,没过多久就把保修日期忘了:自己到底是哪天激活的?保修还有多久?一般我们要自己查询的话,有人喜欢在官网查询,有人喜欢在iPhone上通过Apple……
曹玉骞一站到底对战哈弗,曹玉骞个人资料介绍《一站到底》名校争霸赛的四所名校分别是伦敦大学、北京大学、多伦多大学和哈佛大学。特别有意思的是这一场比赛第一场突围赛伦敦大学和多伦多大学就被团灭,第二场北京大学对战哈佛大学可以……
秦岚结婚了吗,秦岚老公是谁秦岚相信大家都很熟悉吧,在《还珠格格3》里面饰演知画,虽然很多人不喜欢这个角色,但是很多人都借此认识了秦岚,而随后秦岚和黄晓明爆出恋情,由于黄晓明当时正当红,连带着秦岚也火了起……
比新能源和碳中和更重要,种业板块即将起飞在12月10日结束的中央经济工作会议上,明确把种子列为2022年十项工作内容之一;在近期召开的中央农村经济会议上,国家就已经明确表示,未来将加大玉米和油料作物的播种面积。对农田……
吕颂贤老婆是谁,相爱27年膝下无子吕颂贤老婆是麦景婷,老婆麦景婷也是TVB的一位演员,不过人气并没有吕颂贤的高。吕颂贤相信八十年代的人应该知道吧,他是老版《笑傲江湖》中的令狐冲,吕颂贤版本的令狐冲在金庸老先生眼……
余秋雨婚史揭秘,余秋雨如何评价前妻余秋雨是一位文人,文人在很多人眼中都是心性风流的,那余秋雨也是吗?此前,余秋雨和妻子马兰的老夫少妻组合引来很多的质疑声。余秋雨有过多少段婚姻?传闻余秋雨已经和马兰离婚了,这是真……
巴图和王博谷怎么认识的,巴图为什么喜欢大七岁的王博谷王博谷是巴图的妻子,王博谷出生于1983年,巴图出生于1990年,女方比男方大这么多还是挺少见的。而巴图为什么会喜欢比他大七岁的王博谷呢?王博谷这位演员相信大家都看过她的戏,只……
肖战的原名叫什么,肖战原名就叫肖战吗肖战是男子演唱组合ldquo;X玖少年团rdquo;的成员,因参演电视剧《陈情令》在剧中饰演魏无羡一角,而获得众多网友的关注和喜爱。目前,肖战已经成为娱乐圈炙手可热的流量小生,……
三星ZFold3ZFlip3将支持电池保护功能,销量火爆8月28日消息三星GalaxyZFold3和GalaxyZFlip3搭载的是三星基于Android操作系统开发的最新版OneUI3。1。1,虽然相比OneUI3。1版本没有大升……
潘子灏现在跟谁生活,3岁父母双亡成孤儿被韩红收养韩红作为一个非常有实力的歌手,给我带来优秀作品的同时,也将她更多的精力都投入到了慈善中。1999年,韩红在新闻上看到了潘子灏的事情,十分的痛心,当时的潘子灏只有三岁,是一个什么……
一支温度计可污染36万吨地下水,体温计打碎了怎么办?像燃煤和采矿这样的工业活动大大增加了我们环境中的汞含量,甚至连北极苔原地区都在遭受汞污染问题。汞将影响人类和野生动植物的发展和健康。据外媒报道,科学家现在研发了一种低成本的聚合……
谭卓年龄多大了几岁,演员谭卓个人资料介绍电影《我不是药神》自上映后口碑和票房节节攀升,要说这部剧中收益最大的女演员可能就要数演员谭卓,无论是演技还是颜值都在线的谭卓也开始火了,虽然谭卓最近收获了不少的人气及知名度,但……