2014第五届蓝桥杯JAVA本科B组试题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2014第五届蓝桥杯JAVA本科B组试题及答案1.武功秘籍小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他意识到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。答案:(80,81);(82,83);(84,85);(86,87);(88,89);(90,91);(92,93)2.切面条一根高筋拉面,中间切一刀,可以得到2根面条。如果先对折1次,中间切一刀,可以得到3根面条。如果连续对折2次,中间切一刀,可以得到5根面条。那么,连续对折10次,中间切一刀,会得到多少面条呢?答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。答案:1025importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();intnum=(int)Math.pow(2,n)+1;System.out.println(num);//结果:2015}}3.猜字母把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。答案:qimportjava.util.Scanner;/***该程序类似与约瑟夫环的问题*/publicclassMain{publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);Stringstr=abcdefghijklmnopqrs;Stringstr1=;for(inti=0;i106;i++){str1=str1+str;}System.out.println(str1.length());boolean[]arr=newboolean[str1.length()];for(inti=0;iarr.length;i++){arr[i]=true;//下标为TRUE时说明字母还在圈里}intleftCount=str1.length();intcountNum=0;intindex=0;while(leftCount1){if(arr[index]==true){//当在圈里时if(countNum%2==0){//下标为偶数时arr[index]=false;//该字母退出圈子leftCount--;//剩余字母数目减一}countNum++;}index++;//每报一次数,下标加一if(index==str1.length()){//是循环数数,当下标大于n时,说明已经数了一圈,index=0;//将下标设为零重新开始。countNum=0;}}for(inti=0;istr1.length();i++){if(arr[i]==true){System.out.println(i);//输出结果表示下标为1023(第1024个)的字母,即:q}}}}4.大衍数列标题:大衍数列中国古代文献中,曾记载过“大衍数列”,主要用于解释中国传统文化中的太极衍生原理。它的前几项是:0、2、4、8、12、18、24、32、40、50...其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。以下的代码打印出了大衍数列的前100项。for(inti=1;i100;i++){if(i%2==0)//填空System.out.println(i*i/2);elseSystem.out.println((i*i-1)/2);}请填写划线部分缺失的代码。通过浏览器提交答案。注意:不要填写题面已有的内容,也不要填写任何说明、解释文字。答案:i%2==05.圆周率数学发展历史上,圆周率的计算曾有许多有趣甚至是传奇的故事。其中许多方法都涉及无穷级数。图1.png中所示,就是一种用连分数的形式表示的圆周率求法。下面的程序实现了该求解方法。实际上数列的收敛对x的初始值并不敏感。结果打印出圆周率近似值(保留小数点后4位,并不一定与圆周率真值吻合)。doublex=111;for(intn=10000;n=0;n--){inti=2*n+1;x=2+(i*i/x);}System.out.println(String.format(%.4f,______________));答案:4/(x-1)6.奇怪的分式上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4乘以8/5小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45(参见图1.png)老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!对于分子、分母都是1~9中的一位数的情况,还有哪些算式可以这样计算呢?请写出所有不同算式的个数(包括题中举例的)。显然,交换分子分母后,例如:4/1乘以5/8是满足要求的,这算做不同的算式。但对于分子分母相同的情况,2/2乘以3/3这样的类型太多了,不在计数之列!注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。答案:publicclassMain{publicstaticvoidmain(String[]args){intcount=0;for(inta=1;a=9;a++){for(intb=1;b=9;b++){if(a!=b){for(intc=1;c=9;c++){for(intd=1;d=9;d++){if(c!=d){doublesum1=(double)b/a*d/c;doublesum2=(double)(b*10+d)/(a*10+c);if(sum1==sum2){count++;}}}}}}System.out.println(count);//输出结果:14}}}/**这14组数据分别是:2/1*4/54/1*5/86/1*3/46/1*4/69/1*5/91/2*5/46/2*5/61/4*8/59/4*8/91/6*4/31/6*6/42/6*6/51/9*9/54/9*9/8PS:这些分式具有对称性*/7.扑克序列AA223344,一共4对扑克牌。请你把它们排成一行。要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。4A3A24322342A3A4请填写出所有符合要求的排列中,字典序最小的那个。例如:22AA3344比A2A23344字典序小。当然,它们都不是满足要求的答案。2342A3A4请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。答案:2342A3A4publicclass扑克序列{//这题有病,总共就两种情况,题目还给出了publicstaticintcount=0;publicstaticvoidmain(String[]args){char[]num=newchar[8];f(num,0);}publicstaticvoidf(char[]num,inti){if(i=num.length){if(judge(num)){show(num);count++;}}else{for(intj=1;j=4;j++){num[i]=(char)(j+'0');f(num,i+1);}}}publicstaticvoidshow(char[]num){for(inti=0;inum.length;i++){if(num[i]=='1')System.out.print('A');elseSystem.out.print(num[i]);}System.out.println();}publicstaticbooleanjudge(char[]num){boolean[]bool=newboolean[5];intsize_A=0,size_2=0,size_3=0,size_4=0;for(inti=0;inum.length;i++){if(num[i]=='1'){size_A++;if(i+2num.length&&num[i]==num[i+2]||i-20&&num[i-2]==num[i])bool[0]=true;}if(num[i]=='2'){size_2++;if(i+3num.length&&num[i]==num[i+3]||i-30&&num[i-3]==num[i])bool[1]=true;}if(num[i]=='3'){size_3++;if(i+4num.length&&num[i]==num[i+4]||i-40&&num[i-4]==num[i])bool[2]=true;}if(num[i]=='4'){size_4++;if(i+5num.length&&num[i]==num[i+5]||i-50&&num[i-5]==num[i])bool[3]=true;}}if(size_A==2&&size_3==2&&size_2==2&&size_4==2){bool[4]=true;}returnbool[0]&&bool[1]&&bool[2]&&bool[3]&&bool[4];}}8.分糖果有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。反复进行这个游戏,直到所有小朋友的糖果数都相同为止。你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。【格式要求】程序首先读入一个整数N(2N100),表示小朋友的人数。接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)要求程序输出一个整数,表示老师需要补发的糖果数。例如:输入3224程序应该输出:4资源约定:峰值内存消耗(含虚拟机)256MCPU消耗1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。注意:主类的名字必须是:Main,否则按无效代码处理。答案:importjava.util.Scanner;//求测试是否正确publicclassMain{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);intn=sc.nextInt();inta=0,b=0,count=0,x=0;ints[]=newint[n];for(a=0;an;a++){s[a]=sc.nextInt();}sc.close();for(;;){for(a=0;an;a++){s[a]=s[a]/2;}b=s[0];//变化前的第一个小朋友手里的糖果的一半保留for(a=0;an-1;a++){s[a]=s[a]+s[a+1];}s[n-1]=s[n-1]+b;//将第一个小朋友的糖果给最后一个小朋友for(a=0,x=0;an;a++){if(s[a]%2!=0){s[a]=s[a]+1;count++;}else{x++;}}for(a=0;an-1;a++){if(s[a]!=s[a+1]){x=0;}}if(x==n){System.out.println(count);break;}}}}9.地宫取宝

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功