算法大赛试题集合_第1页
算法大赛试题集合_第2页
算法大赛试题集合_第3页
算法大赛试题集合_第4页
算法大赛试题集合_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011全国软件设计大赛题真题,编程题:1.在实际的开发工作中,对于字符串的处理是最常见的编程任务,此题目是要求程序对用户输入的字符串进展处理,具体规章如下:每个单词的首字母变为大写。把数字与字母之间用下划线隔开,使构造清楚。多个空格变为一个空格。例如:输入:youandmewhatcpp2005pragram则输出:YouAndMeWhatCpp_2005_Program输入:this is a 99cat则输出:ThisIs A99_Cat*/2*A,B,C,D,E,F,G,H,I,J,10名学生有可能参与计算机竞赛,也可能不参与,由于某种缘由他们受到以下条件的约束:假设A参与,B也参与;假设C不参与,D也不参与;AC中只能有一个人参与;BD中有且仅有一个人参与;D、E、F、G、H2人参与;CG或者都参与,或者都不参与;C、E、G、I2人参与假设E参与,那么FG也都参与。假设F参与,G、H就不能参与假设I、J都不参与,H必需参与请编程依据这些条件推断10名同学参赛者名单比方LCDGJ 代码在Num2里3/*要求找出具有以下性质的数的个数(n):先输入一个自然数n(n<=500),然后对此自然数依据如下方法进展处理:①.不作任何处理;②.在它的左边加上一个自然数,但该自然数不能超过原数首位数字的一半;③.加上数后,连续按此规章进展处理,直到不能再加自然数为止.样例: 输入: 6满足条件的数为 6162612636136输出: 6*/privatefunctionfenjie(cnum:int,count:int,str:String):void{if(cnum==0)return;if(count==max)trace(str);for(vari:int=cnum;i>0;i--){if(count+i>max)continue;fenjie(i,count+i,str+i);}}/*.和为一个素数,且首尾两数字之和也为一个素数。编程打印出全部的排法。*/七去除级数分别余三、三、五、五。问这楼房共有多少级阶梯?〔400级。101个洞中没有找到兔子,就1个洞,到第3个洞中去找,也没找到兔子,就间隔2个洞,到第6个洞中去找。以后狼每次多隔1个洞去找兔子,„„。这样狼始终找不到兔子。请问兔子可能躲在哪个洞中?2、一位数学家和一些游客共81人不幸落入强盗手中,强盗把俘虏排成一队,宣布每天处理全部第2的N次方个俘虏〔N>=0,而只放走剩下的最终一个。由于数学家身怀重任,不得不选择了一个恰当的位置而最终被放走。请问他归初排在第几个位置。3、有一堆礼物,工作人员无论是分成二个一份,还是三个、四个、五个、六个一份,总是多一个。请问这堆礼物至少多少个?publicclassTest9{publicstaticvoidmain(String[]args){//2、3、4、5、6的最小公倍数inti=7;while(true){if(i%2==1&&i%3==1&&i%4==1&&i%5==1&&i%6==1){System.out.println(i);break;}i=i+6;}}}、一付扑克中拿出全部的黑桃„„K按挨次排好。第一次翻出第一张牌——边,再拿出其次张放到牌的最下面。以后每次都翻出一张牌,再把一张牌放到最终,问第八次翻出的牌是哪一张?publicclassTest10{publicstaticvoidmain(String[]args){Stringa[]={“A“,“2“,“3“,“4“,“5“,“6“,“7“,“8“,“9“,“10“,“J“,“Q“,“K“};List<String>list=newLinkedList<String>;intj;for(inti=0;i<a.length;i++){list.add(a[i]);}for(j=0;j<7;j++){list.remove(0);list.add(list.remove(0));}System.out.println(list.get(0));}}packagetest;/*2、一位数学家和一些游客共81人不幸落入强盗手中,强盗把俘虏排成一队,宣布每天处理全部第2的N次方个俘虏〔N>=0不得不选择了一个恰当的位置而最终被放走。请问他归初排在第几个位置。*/publicclassTest8{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinta[]=newint[81];for(inti=0;i<a.length;i++){a[i]=i+1;}//intb[]=a;intj=0;intcount=0;while(count!=1){count=0;for(inti=0;i<=6;i++){a[(int)(Math.pow(2,i))-1]=0;//System.out.println((int)Math.pow(2,i));}for(inti=0;i<a.length;i++){j=i;if(a[i]==0){for(intk=j+1;k<a.length;k++){if(a[k]!=0){a[i]=a[k];a[k]=0;//j=k;//System.out.println(“a[“+i+“]=“+a[i]+““+“a[“+k+“]=“+a[k]);break;}}}}for(inti=0;i<a.length;i++){if(a[i]!=0)count++;}}for(inti=0;i<a.length;i++){if(a[i]!=0)System.out.println(a[i]);}}}packagetest;importjava.util.Arrays;importjava.util.Scanner;/*验证卡布列克常数,对于一个四位数,进展以下运算1〕将组成该四位数的44个数字组成的最大的四位数;44〔如果高位为0则取得的数缺乏4位;求两个数的差,得到一个的四位数〔高位0保存,称为对N运算。有这样的规律:对一个各位数字不全一样的四位数重复进展假设干次卡布列克运算,最终得到的结果总是6174。这个数被称为卡布列克常数。N从键盘输入。6174时的运算次数。*/publicclassTest11{privatestaticintcount=0;publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println(“请输入一个不完全一样的四位数“);Stringstr=sc.nextLine;charc1[]=str.toCharArray;verify(c1);Arrays.sort(c1);StringstrMin=String.copyValueOf(c1);StringstrMax=““;for(inti=c1.length-1;i>=0;i--){strMax=strMax+c1[i];}//System.out.println(strMax+““+strMin);intmax=Integer.parseInt(strMax);intmin=Integer.parseInt(strMin);System.out.println(“max=“+max+““+“min=“+min);kablk(strMax,strMin);}publicstaticvoidverify(char[]c){if(c.length<4||c.length>4){System.out.println(“长度不符合要求“);System.exit(0);}booleanflag=true;for(inti=0;i<c.length-1;i++){if(c[i]!=c[i+1]){flag=false;break;}}if(flag){System.out.println(“四位数完全相等“);}}publicstaticvoidkablk(StringstrMax,StringstrMin){count++;intmax=Integer.parseInt(strMax);intmin=Integer.parseInt(strMin);inttemp=max-min;if(temp==6174){System.out.println(“count=“+count);}elseif(temp>0){charc1[]=String.valueOf(temp).toCharArray;Arrays.sort(c1);strMin=String.copyValueOf(c1);for(inti=c1.length;i<4;i++){strMin=“0“+strMin;}c1=strMin.toCharArray;//System.out.println(c1);min=Integer.parseInt(strMin);strMax=““;for(inti=c1.length-1;i>=0;i--){strMax=strMax+c1[i];//System.out.println(c1[i]);}max=Integer.parseInt(strMax);kablk(strMax,strMin);System.out.println(“max=“+max+““+“min=“+min);}else{return;}}}〔+-号凑成相应的等式。如能凑成,则打印出这些算式。如不能则打印“NOANSWE1()2()3()4()5()6()7()8()9=R“百钱买百鸡”是我国古代的著名数学题。题目这样描述:31只公鸡,2文钱可以买一只母鸡,13100100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相像,有“鸡兔同笼“问题。推断一字符串是否是回文数,如121、12321、ABA等(字符串输入时以‘.’完毕)。如输入:12321.输出:yes找数。一个三位数,各位数字互不一样,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出全部符合条件的三位数。注:1.不能手算后直接打印结果。2.1和自身外,再没有其它因数的大于1的自然数。A、B、C、D、E3个人去完成。1〕C2〕C〕假设CDE就只能去4〕、、D5〕假设B去了,、E就不能都去。编程找出此项任务该由哪三人去完成的全部组合。李润伟(22048303)17:45:55截数问题:135768,可13,57,68三个自然数。假设某自然数不能平均截取(3整除),可将该自然数高位补零后截取。现编程从键盘上输入一个自然数N(N的位数<12),计算截取后第一个数加第三个数减其次个数的结果。试编程找出能被各位数字之和整除的一切两位数6,假设把个位数字移到首位,4出满足条件的最小正整数。1开头,小明算了算,总共消灭了2021,试编程求这本书一共有多少页?3032先1先令。试编程求出男人女人小孩各多少人?编程找出四个互不相等的自然数,它们之中任意两数之和为偶数, 任意三数之和可以被3整除,而且这四个数的和越小越好(50).0--9之间的数字,现有如下等式成立:a+bc+def=ghij,编程求出满足上述条件等式的个数并将全部等式打印输出.下面的竖式表示,图中的“*“2,3,5,7代替,因此称为素数乘法竖式.***× ***************一个四位数是一个完全平方数,减去一个每位数字都一样的四位数(1111,5555)后,仍是一个完全平方数.请编程打印出全部这样的四位数.12345679,9,111111111,试求:素数(1)当这个数乘以什么数时,5所组成的九位数?(2)当这个数乘以什么数时,9所组成的九位数?李先生和他的孙子同诞生于20世纪,他的孙子与他的年龄之差为60岁,李先生和他的孙子3,4,5,6除,1,2,3,4.编程求出李先生和他的孙子各诞生在哪一年.16/64是一个分子和分母都是两位数的真分数,且分子的个位数与分母的十位数一样.格外惊异的是:假设把该分数的分子的个位数和分母的十位数同时划去,所得到的结果正好等于原分数约分后的结果.16/64=1/4.编程找出全部满足上述条件的真分数.甲去买东西,要付给乙19元,而甲只有3元一张的钱,乙只有5元一张的钱.请为他们设计一个交换方案.有六箱货物,重分别是5吨、2吨、3.5吨、1.7吨、1吨、5.1吨。现有一台货车,载重量10吨。设计一个程序,使这次车运走的货物最多。30503件,21件。期望把全部奖品都发到获奖者手中。请找出全部方案〔即各等奖各有多少人。一个自然数是素数,且它的数字位置经过任意对换后仍为素数,称为确定素数. 例如13.试找出全部这样的四位确定素数一个自然数,假设它的质因数至少是两重的(一样的质因数至少个数为二个,如36=2*2*3*3)则称该数为“秀丽数“.假设相邻两个自然数都是“秀丽数“,就称它们为“孪生秀丽数“.例如8与9就是一对.请编程再找出一对“孪生秀丽数“。1开头,小明算了算,总共消灭了2021,试编程求这本书一共有多少页?publicclassTest3{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubcharbuf[]={”a”,”b”,”c”};intk=buf.length;//选择几个字母排序//charr[]=newchar[k];perm(0,buf,k);//startk}publicstaticvoidperm(intstart,char[]buf,intk){if(start==k){//一个字母的全排列for(inti=0;i<k;i++){System.out.print(buf[i]);}System.out.println;}elseif(start<k){//多个字母全排列for(inti=start;i<k;i++){chartemp=buf[start];//交换数组的第一个元素和后续元素buf[start]=buf[i];buf[i]=temp;perm(start+1,buf,k);//后续元素全排列tempbuf[start];//buf[start]=buf[i];buf[i]=temp;System.out.println(“buf[start]=“+buf[start]+“buf[i]=“+buf[i]);System.out.println(“start=“+start+“i=“+i);}}else{return;}}}任意输入二个自然数,假设商为整数,则直接显示商;否则把商分解成一个自然数和一个正的既约真分数之和才显示。例如:输入:9,3 显示:9/3=3输入:8,6 显示:8/6=1+1/3看成二个分数a/b,c/d.求这二个分数之和.和的显示格式为:输入3,2,1,6 输出: 3/2+1/6=1+2/3。在自然数中,各位数字之和的11倍正好等于自身的自然数只有一个.请找出这个自然数。求全部不超过1000的这样的整数,它的平方的末二位数字一样但不为0“mailto:ecol0408@gmail“Ecol<ecol0408@gmail> packagetoday;importjava.util.ArrayList;importjava.util.List;publicclasshelp13{staticList<Integer>count=newArrayList<Integer>;staticbooleanfunction(intnum){for(inti=0;i<10000;i++){count.add(0);}booleanbl=false;inti=2;while(num>1){if(num%i==0){count.set(i-1,count.get(i-1)+1);num/=i;i=2;}else{i++;}}for(intk=0;k<count.size;k++){if(count.get(k)<2&&count.get(k)>0){//bl=true;break;}if(k==count.size-1){bl=true;}}count=null;count=newArrayList<Integer>;returnbl;}publicstaticvoidmain(String[]args){for(inti=3;i<=9999;i++){if(function(i)&&function(i+1)){System.out.println(i);}}}}packagetest;//4倍,试编程找出满足条件的最小正整数publicclassTest16{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubStringstr=““;intn=0,m=0;intcount=1;while(true){for(inti=1;i<3;){str=String.valueOf(n);Stringtemp=str.substring(0,str.length-1);str=str.substring(str.length-1)+temp;m=Integer.valueOf(str);if(m==n*4){System.out.println(n+““+m);System.exit(0);}n=n+10;i=(int)(n/Math.pow(10,str.length-1));//2}count++;}}}N,PNPM,N(0<N<M)为何值时,1989m1989n0NX(3<=N<=5),将组成该数的各位数字重排列成一个最大数和一个最小数作减法,其差值再重复前述NY,使之重复消灭.例如:X=213,则有 213→321-123=198981-189=892982-289=693963-369=594954-459=495954-459=495Y=954.packagetest;importjava.util.Scanner;/*任意输入二个自然数,假设商为整数,则直接显示商;否则把商分解成一个自然数和一个正的既约真分数之和才显示。例如:输入:9,3 显示:9/3=3输入:8,6 显示:8/6=1+1/3*/publicclassTest17{publicstaticvoidmain(String[]args){inta,b,n,m,l;Scannersc=newScanner(System.in);System.out.println(“a=“);a=sc.nextInt;System.out.println(“b=“);b=sc.nextInt;n=a/b;//商的整数局部m=a%b;//余数if(m!=0)//0{l=Gcd(m,b);//求出余数与被除数的最大公约数m=m/l;//分子;b=b/l;//分母System.out.println(a+“/“+b+“=“+n+“+“+m+“/“+b);}elseSystem.out.println(a+“/“+b+“=“+n);}staticintGcd(intm,intn){if(n==0)returnm;elsereturnGcd(n,m%n);}}任给一个自然数n,求出这个自然数不同因数的个数Mn,nm的因数。例如输入2 则输出2由于2有2个因数。k,k〔n^2-mn-m^2〕^2=1m^2+n^2m,n。一个四位数为ABCD,假设A+C和B+D的值相等,则称这个四位数为穿插数,求四位数的穿插数和个数。定义2x6=12 2612,2612122也是6的倍数。 3x4=12 3和4也是12的因数。12是3和4的倍数。 整数A乘以整数B得到整数C,整数A与整数B就称做整数C的因数,反之整数C就为整数A与整数B的倍数。packageeclip;11这个自然数。*/publicclassTest4{publicstaticlongcheck(longnum){longtemp=num;longsum=0;while(temp!=0){sum+=temp%10;temp=temp/10;}returnsum*11;}publicstaticvoidmain(String[]args){longnum=1;while(true){if(check(num)==num){System.out.println(num);break;}num++;}}}N,PNPpackageecol;为使分发时有足够多的零钞,同时又尽量不使每个人领到的钱太零碎。每个月她都要计算出各种面值的钞票〔1005010521〕各需要多少张。你能否为她设计一个程序,从键盘输入10个人的工资,再计算出各种面值的钞票各需要多少张?*/publicclassmony{staticvoidfunction(intnum){intarray[]=newint[5];

且至少有三个位array[0]=100;array[1]=50;array[2]=10;array[3]=5;array[4]=2;System.out.print(num+“=“);for(inti=0;i<array.length;i++){if(num/array[i]>0){System.out.print(num/array[i]+“*“+array[i]+(num%array[i]>0?“+“:““));}num%=array[i];}if((num/1)>0){System.out.println(num/1+“*“+1);}}publicstaticvoidmain(String[]args){function(12345);}}n,n/2,将重复奇数次字符个化的字符串,例如:“gooddd”:godddddddddd,goddddd,god....d(16d),godddddddd,godddd,godd,god514CM23CM、15CM19CM截一根的前提下,问各截多少根,使所剩余料最少packageecol;importjava.util.Scanner;publicclassmath{staticbooleanfunction(intnum){booleanbl=false;inti;for(i=2;i<=(int)Math.sqrt(num);i++){if(num%i==0){break;}}if(i>(int)Math.sqrt(num)){bl=true;}returnbl;}staticbooleanfunction1(intnum){booleanbl=false;int[]array=newint[10];Stringstr=““+num;for(inti=0;i<str.length;i++){array[Integer.parseInt(str.substring(i,i+1))]++;}for(inti=0;i<10;i++){if(array[i]>=3){bl=true;break;}}returnbl;}publicstaticvoidmain(String[]args){Scannerin=new Scanner(System.in);intN=in.nextInt;for(inti=10000;i<=99999;i++){if(i%N==0&&function(i/N)&&function1(i)){System.out.println(i/N);break;}}}}10〔20〕,每个数加上它所存储位置的下标的和为质数:110521011〔留意算法效率〕2~1000,〔281,2,4,7,141+2+4+7+14=2828〕。〔AB,BA,AB,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论