标签:style blog http color java ar 2014 div 问题
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 != 0 21 //而且平分之后要余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表示猴子个数
标签:style blog http color java ar 2014 div 问题
原文地址:http://www.cnblogs.com/tech-bird/p/3971273.html