首页 > 代码库 > for循环问题(1)

for循环问题(1)

题目:

    海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

代码:

for (int i = 1;; i++) {
            int num = i;
            int j;
            for (j = 0; j <= 5; j++) {
                if ((num - 1) % 5 != 0) {
                    break;
                } else {
                    num=(num-1)/5*4;
                }
            }
            if (j == 5) {
                System.out.println(i);
                break;

            }
        }

 

正确结果:3121

 

解题思路:

首先,正着来看,设这堆桃子有 i 个,一共有五只猴子来分,所以写第一个for循环,

第二,桃子的数量时一个变量,而 i 是总数,是定值。所以就有了上面的 int num = i;

第三,每只猴子都能将桃子分成五份多一个,所以一开始有桃子数i=num个。只有当(num-1)/5=0时符合题意,每分一次,数量就变成num=num-1/5*4。

第四,只有当 j,也就是猴子数正好等于5的时候可以分出来的数字,才是正确的桃子数。

 

for循环问题(1)