您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 创业/孵化 > 第四届蓝桥杯java本科B组试题及答案
/**标题:世纪末的星期*曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31....12月31日都不可能是星期一!!......1999年的12月31xx9912月31412月31***/importjava.util.Calendar;importjava.util.Date;publicclassMain{publicstaticvoidmain(String[]args){for(inti=1999;;i+=100){Calendarcalendar=Calendar.getInstance();calendar.setTime(newDate(i-1900,11,31));if(calendar.get(Calendar.DAY_OF_WEEK)-1==0){System.out.println(i);return;}}}}/**标题:马虎的算式36x495=?396x45=?因为36*495=396*45=1782027*594=297*54假设abcde代表1~9不同的50ab*cde=adb*ce**/publicclassMain{staticintkinds=0;staticinta[]=newint[6];staticbooleanvis[]=newboolean[10];staticvoidcheck(inta[]){intnum1=a[1]*10+a[2];intnum2=a[3]*100+a[4]*10+a[5];intnum3=a[1]*100+a[4]*10+a[2];intnum4=a[3]*10+a[5];if(num1*num2==num3*num4)kinds++;}staticvoiddfs(intstart,intn){if(start==6){check(a);}else{for(inti=1;in;i++){if(vis[i])continue;a[start]=i;vis[i]=true;dfs(start+1,n);vis[i]=false;}}}publicstaticvoidmain(String[]args){dfs(1,10);System.out.println(kinds);}}/*****标题:振兴中华p1.jpg*从我做起振我做起振兴做起振兴中起振兴中华****要求跳过的路线刚好构成“从我做起振兴中华”这句话。请你帮助小明算一算他一共有*/classNode{intx,y;publicNode(intxx,intyy){x=xx;y=yy;}}publicclassMain{staticintkinds=0,dir[][]={{0,1},{1,0}};staticNodeaim[]=newNode[8];staticbooleanvis[][]=newboolean[4][5];staticvoiddfs(intstart,intn){if(start==n)kinds++;else{Nodepre=aim[start];for(inti=0;i2;i++){intx=pre.x+dir[i][0];inty=pre.y+dir[i][1];if(x4&&y5&&!vis[x][y]){vis[x][y]=true;aim[start+1]=newNode(x,y);dfs(start+1,n);vis[x][y]=false;}}}}publicstaticvoidmain(String[]args){aim[0]=newNode(0,0);dfs(0,7);System.out.println(kinds);}}/**标题:黄金连分数黄金分割数0.61803...出现。有时需要把这个数字求得很精确。!!1黄金数=---------------------11+-----------------11+-------------11+---------1+...100位。小数点后30.618小数点后40.6180小数点后50.61803小数点后70.61803400100位精度的黄金分割值。尾数是0*/importjava.math.BigDecimal;publicclassMain{publicstaticvoidmain(String[]args){BigDecimalone,ans;ans=one=BigDecimal.ONE;for(inti=0;i1000;i++){ans=one.add(ans);ans=one.divide(ans,200,BigDecimal.ROUND_HALF_UP);System.out.println(ans);}System.out.println(ans.setScale(100,BigDecimal.ROUND_HALF_UP));}}/**每张票据有唯一的ID号。全年所有票据的IDID的开始数码是随机选定的。IDIDID重号。ID和重号的ID。假设断号不可能发生在最大和最小号。要求程序首先输入一个整数N(N100)表示后面数据行数。接着读入N行数据。每100100000每个整数代表一个ID号。要求程序输出1mnm表示断号IDn表示重号ID25681191012979616417810810918015514115910418217911813718411512412512916819617218912710711219210313113316915812810211014813915714019519718515213510612317312213617419114511615114317512016113416219014913814214619912616515615319314416617012117113210119418718811313017615417712011715011418318618110016316016714719811111910512064MCPU消耗2000ms*/importjava.util.Scanner;publicclassMain{staticinthash[]=newint[100001];publicstaticvoidmain(String[]args){Scannercin=newScanner(System.in);intN=cin.nextInt();intmin=100001,max=-1;intm=0,n=0;StringstrLine=cin.nextLine();//过滤第一次输入n带来的回车换行while(N--!=0){strLine=cin.nextLine();Scanners=newScanner(strLine);while(s.hasNextInt()){intt=s.nextInt();min=Math.min(t,min);max=Math.max(t,max);hash[t]++;}}for(inti=min;i=max;i++){if(hash[i]==0)m=i;if(hash[i]==2)n=i;}System.out.println(m++n);}}/**幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,....1就是第一个幸运数。我们从2这个数开始。把所有序号能被21_3_5_7_9....13579....3为第2把所有能被3否被3整除!!删除的应该是511,17,...此时7为第37整除的(19,39,...)1,3,7,9,13,15,21,25,31,33,37,43,49,51,63,67,69,73,75,79,...输入两个正整数mn,用空格分开(mn1000*1000)程序输出位于m和n之间m和n120530698*/importjava.util.Scanner;publicclassMain{staticinta[]=newint[500000+1];staticvoidlucky(intstart,inta[],intlen){intk=start,num=a[start];for(inti=k;ilen;i++)if(i%num!=0)a[k++]=a[i];if(numlen)lucky(start+1,a,k);}publicstaticvoidmain(String[]args){intlen=500000,kinds=0;for(inti=1;ilen;i++)a[i]=2*i-1;lucky(2,a,len);Scannercin=newScanner(System.in);intm=cin.nextInt();intn=cin.nextInt();longsta=System.currentTimeMillis();for(inti=1;ilen;i++){if(a[i]=n||a[i]==a[i-1])break;if(a[i]m&&a[i]n)kinds++;}System.out.println(kinds);}}/**100100=3+69258/714100=82+3546/1971~90100有11种表示法。N(N1000*1000)程序输出该数字用数码1~9100程序输111056*/importjava.util.Scanner;publicclassMain{staticintkinds=0;staticinta[]=newint[10];staticbooleanvis[]=newboolean[10];//全排列避免重复staticintsum(intstart,intend){intsum=0;for(inti=start;iend;i++)sum=sum*10+a[i+1];returnsum;}staticvoidcheck(inta[],intn,intnum){intbegin=1,temp=num;while((temp=temp/10)!=0)begin++;for(intk=1;kbegin+1;k++){intnum1=sum(0,k);if(num1=num)return;//加快跳出for(intj=k+(n-k)/2;jn-1;j++){intnum2=sum(k,j);intnum3=sum(j,n-1);if(num2num3&&num2%num3==0&&num==num1+num2/num3){kinds++;}}}}staticvoiddfs(intstart,intn,intnum){if(start==n){check(a,n,num);}else{for(inti=1;in;i++)//全排列{if(vis[i])continue;a[start]=i;vis[i]=true;dfs(start+1,n,num);vis[i]=false;}}}publicstaticvoidmain(String[]args){Scannercin=newScanner(System.in);intnum=cin.nextInt();longstart=System.currentTimeMillis();dfs(1,10,num);longend=System.currentTimeMillis();//System.out.println(end-start);//运行时间System.out.println(kinds);}}/**在1~N如果区间[L,R]L个到第R得到一个长度为R-L+1当NNN(1=N=50000),表示全排列的规模。第二行是N个不同的数字Pi(1=Pi=N)表示这N个数字的某一全排列。43241753425197[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4]9[1,1],[1,2
本文标题:第四届蓝桥杯java本科B组试题及答案
链接地址:https://www.777doc.com/doc-4357341 .html