您的位置:首页 > 其它

猴子分桃问题,自己摸索。较繁琐

2014-10-24 12:51 253 查看
1979年,李政道博士给中国科技大学少年班出过一道智趣题:5只猴子分一堆桃子,怎么也分不成5等分,只好先去睡觉,准备第二天分。夜里1只猴子偷偷爬起来,先吃掉一个桃子,然后将其分为5等份,藏起自己的一份就去睡觉了;第二只猴子又爬起来,吃掉一个桃子后,也将桃子分成5等份,藏起自己的一份睡觉去了;以后的3只猴子都先后照此办理。问最初至少有多少个桃子?最后至少还剩多少个桃子?    
public class MonkeyPeach {
public static void main(String[] args) {
int n=5;//分桃次数,题中为5
MonkeyPeach m = new MonkeyPeach();
for(int iPeach=1;; iPeach++) {
if((m.getPeach(iPeach,n)) !=0) {
System.out.println("原桃子数最少为"+iPeach+"个");
break;
}
}
}

//分一次桃,返回剩下的桃子数,0表示原桃子数不符合条件
private int getPeach(int i) {
if((((i-1) % 5) != 0) || (i<5)) {
return 0;
}
return (i-1)*4/5;
}

//分n次桃,返回剩下的桃子数,0表示原桃子数不符合条件
private int getPeach(int i ,int n) {
for(int j=1; j<=n; j++) {
i=getPeach(i);
if(i==0) {
return 0;
}
}
return i;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: