实例023-猴子分桃问题

题目如下

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

分析

倒推,如果第5个猴子分得1个,从而得出总共6个(即第4个猴子分完拿走自己的后,剩余的数目。一定是4的倍数,因为他们5个是一模一样多的。)对4求余,显然除不尽(不符合条件),排除了1,然后再尝试2、3……

Java代码实现

public class MonkeyPeach023 {
    public static void main(String[] args) {
        int i;//循环次数
        int fifthMonkeyPeach=1;//假设第5个猴子分得1个桃子
        int peach;//桃子剩余数
        while (true) {
            peach=4*fifthMonkeyPeach;
            for (i = 0; i < 5; i++) {
                if (peach % 4 != 0) {
                    break;
                } else {
                    peach=(peach/4)*5+1;
                }
            }
            fifthMonkeyPeach++;
            if (i == 5) {
                break;
            }
        }
        System.out.println("海岛上至少有"+peach+"个桃子");
        System.out.println("最后一只猴子分得的桃子数为"+(fifthMonkeyPeach-1));
    }
}

运行结果

结果
posted @ 2022-03-02 13:52  Java成长之路^  阅读(310)  评论(0)    收藏  举报