黑马程序员技术交流社区

标题: 趣味测试题一枚,锻炼一下逻辑能力 [打印本页]

作者: 姬仁贵    时间: 2012-7-24 16:34
标题: 趣味测试题一枚,锻炼一下逻辑能力
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?



作者: 刘海源    时间: 2012-7-24 17:37
我了个去,晕晕
作者: 姬仁贵    时间: 2012-7-24 17:41
刘海源 发表于 2012-7-24 17:37
我了个去,晕晕

晕什么涅?
作者: 李伟    时间: 2012-7-24 17:45
package cn.itcast.test;

public class FiveMonkeys
{
        public static void main(String[] args)
        {
                int x=1;//定义第五只猴子分完桃子后每份桃子的数量,默认值为1;
                int y;//定义第四只猴子分完桃子后每份桃子的数量
                int z;//定义第三只猴子分完桃子后每份桃子的数量
                int m;//定义第二只猴子分完桃子后每份桃子的数量
                int n;//定义第一只猴子分完桃子后每份桃子的数量,则总桃子数位5n+1;
                      //如果想求出总桃子数的最小值,就要先求出x的最小值。
                int total;//定义桃子总数最小值。
                while(x>0)
                {
                        if((5*x+1)%4==0)
                        {
                                y=(5*x+1)/4;
                                if((5*y+1)%4==0)
                                {
                                        z=(5*y+1)/4;
                                        if((5*z+1)%4==0)
                                        {
                                                m=(5*z+1)/4;
                                                if((5*m+1)%4==0)
                                                {
                                                        n=(5*m+1)/4;
                                                        total=5*n+1;
                                                        System.out.println("海滩上原来最少有:"+total+"个桃子!");
                                                        System.out.println("第一个猴子分的每份桃子数:"+n);
                                                        System.out.println("第二个猴子分的每份桃子数:"+m);
                                                        System.out.println("第三个猴子分的每份桃子数:"+z);
                                                        System.out.println("第四个猴子分的每份桃子数:"+y);
                                                        System.out.println("第五个猴子分的每份桃子数:"+x);
                                                        break;
                                                }
                                        }
                                }
                        }
                        x++;
                }
        }
}

作者: 李伟    时间: 2012-7-24 17:46
输出结果是:
海滩上原来最少有:3121个桃子!
第一个猴子分的每份桃子数:624
第二个猴子分的每份桃子数:499
第三个猴子分的每份桃子数:399
第四个猴子分的每份桃子数:319
第五个猴子分的每份桃子数:255

作者: 何旭栋    时间: 2012-7-24 18:11

  1. class demo {

  2.         /**
  3.          * @param args
  4.          *
  5. 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,
  6. 这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,
  7. 同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub
  11.                 int i;
  12.                 int tmp = 1;
  13.                 int aPart, num;
  14.                
  15.                 while(true){
  16. //                        第五个猴子一份aPart个桃子,五猴平分前共有num个桃子
  17.                         aPart = tmp;
  18.                         num = aPart*5+1;
  19. //                        第五个猴子桃子总数为第四个猴子拿走桃子个数的4倍,第四个猴子桃子总数为第三个猴子拿走桃子个数的4倍,
  20. //                        即每个猴子桃子总数为4的倍数
  21. //                        但第一个猴子桃子总数不是第0个猴子拿走桃子个数的4倍,所以第一个猴子的桃子总数不用是4的倍数
  22.                         for (i=5; (num&3)==0; i--){
  23.                                 if(i==2){
  24.                                         num = (num>>2)*5+1;        
  25.                                         System.out.println("海滩上原来最少有"+num+"个桃子。");
  26.                                         return;
  27.                                 }
  28.                                 num = (num>>2)*5+1;        
  29.                         }
  30.                         tmp++;
  31.                 }
  32.         }
  33. }
  34. /* 结果为3121个
  35. * 猴子:        1                2                3                4                5
  36. * 拿走:        624                499                399                319                255
  37. * 总数:        3121        2496        1996        1596        1276
  38. */
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2