猴子分桃问题

LB228988 2014-09-15 08:51:36
m只猴子,第一只猴子把苹果分成了m堆,发现多了一个,于是把多的一个吃掉,并拿走了其中一堆,第二只猴子来了把剩下的桃子继续分成m堆,发现多了一个,吃了多余的一个,并拿走了其中的一堆,m只猴子依次类推,。问,最初,苹果有多少个。

求给个思路,如果用递归,结束条件应该是从猴子数目下手还是其他,非递归勒。
用非递归写了下,有点模糊。求完整讲解

import java.util.Scanner;
public class MonkeyPeeach {
static StringBuffer sb = new StringBuffer();
public static void main(String[] args) {
int monkeyNumber = 0;
Scanner in = new Scanner(System.in);
monkeyNumber = in.nextInt();
for(int i = 4;i<1000;i++){
showPeeachNumber(monkeyNumber,25);
}
System.out.println(sb.toString().split("\\#")[0]);
}
private static void showPeeachNumber(int monkeyNumber, int peeachNumber) {
int nowTotalPeeach = 0;
int count = monkeyNumber;
int totalNumber = peeachNumber;
/*
* 总共monkeyNumber猴子,没只猴子把桃子分为monkeyNumber份,然后都会多余一个,然后再吃掉
* 所以假设桃子总数为N,则N-1必须能被monkeyNumber整除,第一只猴子过后剩余的桃子数目为:N-1*(N-1)/monkeyNumber-1=(N-1)*monkeyNumber/2,假设为3只猴子
* 则为(N-1)*3/2,第二只猴子为((N-1)*3/2-1)*3/2,一依次类推,当三只猴子都进行玩了的时候,寻找能够整除猴子数量的整数。
*/
if(!((peeachNumber-1)% monkeyNumber==0)){
return;
}else{
int i = 0;
for(i = 0;i<monkeyNumber;++i){
nowTotalPeeach=(totalNumber-1)/monkeyNumber*(monkeyNumber-1);
totalNumber = nowTotalPeeach;
if(i==monkeyNumber&&(totalNumber%3==0)){
break;
}
System.out.println("桃子总数"+peeachNumber);
}
if(i==monkeyNumber&&totalNumber%3==0){
sb.append(peeachNumber+"#");
}
}

}

}
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LB228988 2014-09-15
  • 打赏
  • 举报
回复
引用 2 楼 LB228988 的回复:
[quote=引用 1 楼 sky_walker85 的回复:] 第二只猴子是不是分了m-1堆,并以此类推?
m只猴子分一堆桃子,怎么也分不成m等分,只好先去睡觉,准备第二天分。夜里1只猴子偷偷爬起来,先吃掉一个桃子,然后将其分为m等份,藏起自己的一份就去睡觉了;第二只猴子又爬起来,吃掉一个桃子后,也将桃子分成m等份,藏起自己的一份睡觉去了;以后的m-2只猴子都先后照此办理。问最初至少有多少个桃子? 你可以这样理解。[/quote] 5换成m,每次都分成猴子数目大小等分
LB228988 2014-09-15
  • 打赏
  • 举报
回复
引用 1 楼 sky_walker85 的回复:
第二只猴子是不是分了m-1堆,并以此类推?
m只猴子分一堆桃子,怎么也分不成5等分,只好先去睡觉,准备第二天分。夜里1只猴子偷偷爬起来,先吃掉一个桃子,然后将其分为m等份,藏起自己的一份就去睡觉了;第二只猴子又爬起来,吃掉一个桃子后,也将桃子分成m等份,藏起自己的一份睡觉去了;以后的m-2只猴子都先后照此办理。问最初至少有多少个桃子? 你可以这样理解。
skyWalker_ONLY 2014-09-15
  • 打赏
  • 举报
回复
第二只猴子是不是分了m-1堆,并以此类推?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧