题目
思路一
-
求最开始最少香蕉数,我们根据分堆次序,可以知道如果最后一只猴子分成五份时,每只猴子分到的是m个香蕉,则最开始的香蕉数能满足条件且最少。
-
第五只猴子分配时有m*5=5m个香蕉
-
第四只猴子分配时有 5m*5/4+4
-
第三只猴子分配时有 (5m*5/4+4)*5/4+3
-
第二只猴子分配时有 ((5m*5/4+4)5/4+3)* 5/4+2
-
第一只猴子分配时有 (((5m*5/4+4)5/4+3)* 5/4+2 )*5/4+1
-
总数需要满足整数的条件,由此可以解出m的值:3141
思路二
Code
public class Main {
public static void main(String []args){
for(int i=1;;i++){
int sum = i; //用i表示香蕉的数量,因为后续会对i进行多次重新赋值,因此定义一个sum来接收i
if(sum%5==1){
sum = sum-1-sum/5;//猴子会吃掉多余的并藏起自己那份
if(sum%5==2){
sum = sum-2-sum/5;
if(sum%5==3){
sum = sum-3-sum/5;
if(sum%5==4){
sum = sum-4-sum/5;
if(sum%5==0&&sum!=0){//最后香蕉数量不能为0
System.out.println(i); //最后输出的应当是i的值
break;
}
}
}
}
}
}
}
}