首页 > 代码库 > 猴子分桃
猴子分桃
m只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的m堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有m-1堆桃。于是合在一起,分成相等的m堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?
直接上代码:
1 import java.util.Scanner; 2 public class huawei_taozi { 3 /** 4 * 猴子分桃问题 5 */ 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 System.out.println("输入猴子个数:"); 9 10 int num = scanner.nextInt();11 12 int monkey=1; //要分桃的猴子数 13 int peaches=1; //桃的总数 14 int peach=1; //每次分桃的总数 15 16 //循环进行给每个猴子分桃 17 while(monkey<=num) 18 { 19 //如果成功分桃 20 //分桃的标准是每一堆不为0 peach/num != 021 //而且平分之后要余1 peach%num==1 22 if(peach%num==1 && peach/num != 0) 23 { 24 //当一堆分完之后,每一堆的桃子个数为peach/num(余数为1,忽略不计)25 //所以下次分时,桃子总个数是(peach/num)*(num-1)26 peach=(peach/num)*(num-1); 27 28 //换下一个猴子 29 monkey++; 30 31 } 32 //如果失败,重新分桃这时可分桃数量加1 33 else 34 { 35 peaches++; 36 peach=peaches; 37 monkey=1; 38 } 39 } 40 System.out.println("桃的最小总数为:"+peaches); 41 }42 }
m超过10好像就是大数问题了。
这个题可以总结出一个公式出来。
m^m - (m-1)
m表示猴子个数
猴子分桃
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。