1.问题重述
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
2.解析
我们可以换一种思维,把这个问题转换为按照这个要求找一个符合这个条件的正整数。
3.解决问题
代码如下:
public class demo {
public static void main(String[] args) {
// 假设每个猴子拿走1个,加上每个猴子仍在海里的1个,
// 剩下的4个,所以从4开始
int num = 14;
while (true) {
// 执行方法IsNumber()查看桃子数是否符合要求
if (IsNumber(num)) {
break;
}
num++;// 桃子数不合适加1
}
System.out.println(num);
}
private static boolean IsNumber(int num) {
int i = 0;
while (i < 5) {
// 只有正确的桃子数i才会累加到5,返回true
// 反之不正常时,要么直接执行else,要么先执行1到3次if再执行else返回false
if ((num - 1) % 5 == 0) {
// (num-1)/5是每个猴子拿走的桃子,-1是每个猴子扔到海里的
num = num - (num - 1) / 5 - 1;
i++;
} else
return false;
}
return true;
}
}