蓝桥杯结果填空题训练部分题目代码

来源:互联网 发布:单片机材料做的 编辑:程序博客网 时间:2024/06/05 03:23
  

 1. 考察团组成

     某饭店招待国外考察团。按照标准,对领导是400/人,随团职员200/人,对司机50/人。

    考察团共36人,招待费结算为3600元,请问领导、职员、司机各几人。

答案是三个整数,用逗号分隔。

 

/* * 考察团组成 */import java.util.Scanner;public class Main {public static void main(String[] args){     Scanner in=new Scanner(System.in); int i,j,k,sum,max=0,a=0,b=0;for(i=1;i<36;i++){for(j=1;j<36;j++){for(k=1;k<36;k++){if((i+j+k==36)&&(400*i+200*j+50*k==3600)){System.out.println(i+","+j+","+k);}}}}}}


答案:

3,5,28

 

2. 微生物增殖

  假设有两种微生物 和 Y

    X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。

    一个新出生的X,半分钟之后吃掉1Y,并且,从此开始,每隔1分钟吃1Y

现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。

如果X=10Y=90  呢?

    本题的要求就是写出这两种初始条件下,60分钟后Y的数目。

题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 就是最终导致 种群灭绝的最后一根稻草!

     请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!

两个整数,每个1行。

  

/* * 微生物增值 */public class Main {public static void main(String[] args) {int new_x=1,old_x=0,y=90;for(int time=1;time<=60;time++){if(time%6==0){new_x=old_x;}else if(time%6==1){y-=new_x;y-=old_x;old_x+=new_x;new_x=0;}else if(time%6==3){y-=old_x;}else if(time%6==5){y-=old_x;}if(time%4==0){y*=2;}if(y<=0){break;}}System.out.println(y);}}


答案:

0        

94371840 

 

3. 除去次方数

自然数的平方数是:1 4 9 16 25 

自然数的立方数是:1 8 27 64 125 

自然数的4次方数是:1 16 81 256 

这些数字都可以称为次方数。

1~10000中,去掉所有的次方数,还剩下多少个数字?

 

/* * 除去次方数 */import java.util.HashSet;import java.util.Set;public class Main {public static void main(String[] args) {     Set<Double> sets=new HashSet<Double>();     sets.add(1.0);//添加第一个元素1     int i,j=2;     for(i=2;Math.pow(i, j)<=10000;i++)     {     for(j=2;Math.pow(i, j)<=10000;j++)     {     sets.add(Math.pow(i, j));     }     j=2;     }System.out.println(10000-sets.size());}}


 

答案:

9875

 

4. 古堡算式

    福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:

    ABCDE * ? = EDCBA

    他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”

    华生:“我猜也是!”

    于是,两人沉默了好久,还是没有算出合适的结果来。

    请你利用计算机的优势,找到破解的答案。

    把 ABCDE 所代表的数字写出来。

    答案写在“解答.txt”中,不要写在这里!

 

/* * 古堡算式 */public class Main {public static void main(String[] args) {      int a,b,c,d,e;      int a1,b1,c1,d1,e1;      for(int i=1234;i<=98765;i++)      {      a=i/10000;      b=i/1000-a*10;      c=i/100-a*100-b*10;      d=i/10-a*1000-b*100-c*10;      e=i%10;            if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)//符合这5个数互不相等的条件      {      int t;      for(int j=0;j<10;j++)      {      t=i*j;      e1=t/10000;      d1=t/1000-e*10;      c1=t/100-e*100-d*10;      b1=t/10-e*1000-d*100-c*10;      a1=t%10;            if(a==a1&&b==b1&&c==c1&&d==d1&&e==e1)      {     System.out.println(a+" "+b+" "+c+" "+d+" "+e);       }      }      }      }      }}


答案:

21978

 

5. 海盗比酒量

    有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。

    等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......

    请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人没倒下。

如果有多个可能的答案,请列出所有答案,每个答案占一行。

格式是:人数,人数,...

   例如,有一种可能是:20,5,4,2,0

多个答案排列顺序不重要。

答案写在“解答.txt”中,不要写在这里!

 

/* * 海盗比酒量 */public class Main {public static void main(String[] args) {     int i,j,k,m;     double sum;     for(i=1;i<=20;i++)     {     for(j=1;j<=20;j++)     {     if(j<i)     for(k=1;k<=20;k++)     {     if(k<j)     for(m=1;m<=20;m++)     {     if(m<k)     {    sum=1.0/i+1.0/j+1.0/k+1.0/m;     if(Math.abs(sum-1.0)<0.0000001)    {    System.out.println(i+" "+j+" "+k+" "+m);    }     }     }     }     }     }     }}


 

答案:

18,9,3,2     

15,10,3,2    

20,5,4,2   

12,6,4,2     

 

6. 欧拉与鸡蛋

  大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。

欧拉随便问:“卖了多少鸡蛋呢?”

  不料一个说:“我们两人自己卖自己的,一共卖了150个鸡蛋,虽然我们卖的鸡蛋有多有少,但刚好得了同样的钱数。你猜猜看!”

欧拉猜不出。

   另一个补充道:“如果我按她那样的价格卖,可以得到32元;如果她按我的价格卖,可以得到24.5元”。

欧拉想了想,说出了正确答案。

   我们不是数学家,懒得列出公式来分析。但计算机可以“暴力破解”,就是把所有可能情况都试验一遍,撞上为止!

请写出每人鸡蛋的数目(顺序不限),用逗号隔开。

答案写在“解答.txt”中,不要写在这里! 

 

/* * 欧拉与鸡蛋 */public class Main {public static void main(String[] args) {     int anum,bnum;     double aprice,bprice;     for(anum=1;anum<150;anum++)     {     bnum=150-anum;     aprice=32.0/bnum;     bprice=24.5/anum;     if(anum*aprice==bnum*bprice)     {    System.out.println(anum+" "+bnum);      }     }    }}


答案:

70,80 或 80,70

 

 

7. 黄金队列

    黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子....

    黄金分割数是个无理数,也就是无法表示为两个整数的比值。0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.618034

   有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!

1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。它后面的每一个项都是前边两项的和。

如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!

   你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。

请写出该比值。格式是:分子/分母。比如:29/47

答案写在“解答.txt”中,不要写在这里!

 

/* * 黄金队列 */import java.text.DecimalFormat;public class Main {public static void main(String[] args){ DecimalFormat df=new DecimalFormat("0.000000");int []num=new int [10000];int i=1;while(i<10000){double a=lucas(num,i);double b=lucas(num,i+1);double r=a/b;if(df.format(r).equals("0.618034"))//拿r与0.618034比较,最相似时输出{System.out.println(a+"/"+b);return ;}i++;}}public static int lucas(int []num,int n){if(n==1){return 1;}if(n==2){return 3;}if(num[n-1]>0){return num[n-1];}return (num[n-2]=lucas(num,n-1))+(num[n-3]=lucas(num,n-2));}}


答案:

1364/2207

 

8. 猜生日

   今年的植树节(2012312日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”

  “把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”

他想了想,又补充到:“再给个提示,我是6月出生的。”

根据这些信息,请你帮小明算一下,他叔叔的出生年月日。

答案写在“解答.txt”中,不要写在这里!

格式是年月日连成的8位数。

例如,如果是1948612日,就写:19480612

 

/* * 猜生日(该题的输出问题,连续输出尚未解决) */public class Main {public static void main(String[] args) {     int year,day;     for(int a=1;a<=2;a++)     {     for(int b=0;b<=9;b++)     {     for(int c=0;c<=9;c++)     {     for(int d=0;d<=9;d++)     {     for(int e=0;e<=9;e++)     {     for(int f=6;f<=6;f++)     {     for(int g=0;g<=9;g++)     {     for(int h=0;h<=9;h++)     {     if((e*10+f)<=12&&(g*10+h)<=31&&(a*1000+b*100+c*10+d)<2012&&(a*1000+b*100+c*10+d)>1900)    {    long sum;    sum=a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h;    if(sum%2012==0&&sum%3==0&&sum%12==0)    {    System.out.print(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h);    }    }     }     }     }     }     }     }     }     }}}


 

答案:

19550604

 

9. 棋盘上的麦子

    你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)。

   国王以为他只是想要一袋麦子而已,哈哈大笑。

当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!

   请你借助计算机准确地计算,到底需要多少粒麦子。

答案写在“解答.txt”中,不要写在这里!

 

/* * 棋盘上的麦子(数据溢出) * 该题未解决超长整形的定义问题 */public class Main {public static void main(String[] args) {      long sum=0;     int i,j;     for(i=0;i<64;i++)     {     sum+=Math.pow(2, i);     }     System.out.println(sum);}}


答案:

18446744073709551615

 

10. 国庆星期日

  1949年的国庆节(101日)是星期六。 

今年(2012)的国庆节是星期一。

那么,从建国到现在,有几次国庆节正好是星期日呢?

只要答案,不限手段!

可以用windows日历,windows计算器,Excel公式,。。。。。

当然,也可以编程!

不要求写出具体是哪些年,只要一个数目!

千万不要提交源代码!

答案不要写在这里,写在“解答.txt”中

 

 

/* * 国庆星期日 */public class Main {public static void main(String[] args) {      int week=6,count=0;      int run=366%7;      int ping=365%7;        int year;      for(year=1950;year<2012;year++)      {        if((year%100!=0)&&(year%4==0))        {         week+=run;            week%=7;            if(week==0)            {            count++;            }        }        else        {        week+=ping;        week%=7;        if(week==0)        {        count++;        }        }      }      System.out.println(count);}}


答案:

9

 

11. 找素数

素数就是不能再进行等分的整数。比如:711。而9不是素数,因为它可以平分为3等份。一般认为最小的素数是2,接着是35... 

请问,第100002(十万零二)个素数是多少?

请注意:“2” 是第一素数,“3” 是第二个素数,依此类推。

不需要提交源代码,只要写出准确的结果即可!

答案写在:“解答.txt”中,不要写在这里。

 

/* * 找素数 */public class Main{public static void main(String[] args) {int n=1;int i=3;while(n<100002){if(check(i)){n++;System.out.println(n+" "+i);i++;}else{i++;}}}public static boolean check(int n){int k= (int) Math.sqrt(n);for(int i=2;i<=k;i++){if(n%i==0){return false;}}return true;}}


 

答案:

1299743

 

12. 填写算式

看这个算式:

☆☆☆ ☆☆☆ ☆☆☆

如果每个五角星代表 1 ~ 9 的不同的数字。

这个算式有多少种可能的正确填写方法?

173 + 286 = 459

295 + 173 = 468

173 + 295 = 468

183 + 492 = 675

以上都是正确的填写法!

注意:

111 + 222 = 333 是错误的填写法!

因为每个数字必须是不同的! 

也就是说:1~9中的所有数字,每个必须出现且仅出现一次!

注意:

不包括数字“0”!

注意:

满足加法交换率的式子算两种不同的答案。

所以答案肯定是个偶数!

注意:

只要求计算不同的填法的数目

不要求列出所有填写法

更不要求填写源代码!

答案不要写在这里,请写在“解答.txt”中!

 

/* * 填写算式 */public class Main {public static void main(String[] args) {     int a,b,c,d,e,f,g,h,j;     int i;     int count=0;     for(a=1;a<=9;a++)     {     for(b=1;b<=9;b++)     {     for(c=1;c<=9;c++)     {     for(d=1;d<=9;d++)     {     for(e=1;e<=9;e++)     {     for(f=1;f<=9;f++)     {     for(g=1;g<=9;g++)     {     for(h=1;h<=9;h++)     {     for(i=1;i<=9;i++)     {     if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&&d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&e!=f&&e!=g&&e!=h&&e!=i&&f!=g&&f!=h&&f!=i&&g!=h&&g!=i&&h!=i)     {      if((a*100+b*10+c)+(d*100+e*10+f)==(g*100+h*10+i))      {      //System.out.println(a+" "+b+" "+c+"+"+d+" "+e+" "+f+"="+g+" "+h+" "+i);      count++;      }     }     }     }     }     }     }     }     }     }     }     System.out.println(count);}}


答案:

336

 

 

 

总结:

结果填空题都是一些简单的暴破或用计算器可以算出的小题,但有几道还是有些难度的。

 

0 0