猴子分桃
来源:互联网 发布:淘宝店铺怎么引流量 编辑:程序博客网 时间:2024/04/30 14:06
题目:
五只猴子分一堆桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?
分析:
设第一只到第五只猴子分的每个堆的大小分别为a, b, c, d, e。那么满足如下的关系:
4*a = 5*b+1 。。。。(1)//第一只猴子走后剩下的桃子数为4*a; 第二只猴子将这些桃分成5堆,每堆大小为b (以下关系式类似)
4*b = 5*c+1 。。。。(2)
4*c = 5*d+1 。。。。(3)
4*d = 5*e+1 。。。。(4) //第五只猴子在第四只猴子走后的分法是5*e+1
消除中间变量,只保留a和e,得到关系式:
4^4*a=5^4*e + 369
即256*a = 625*e + 369 。。。。(5)
总的桃子数是S=5*a+1
要求S的最小值,相当于求a的最小值,也就是相当于求e的最小值,所以只需要在式(5)中将正整数e从初始值1开始循环,满足a也是正整数的结果就是S的最小值。
注:如果仅仅满足(5)式,并不能完全保证上面(1)到(4)式的成立,因此可以将计算出的a依次代入(1)到(4)式检验是否正确(这里的代码中没有做校验)。
代码:
public class MonkeyPeaches {public static void main(String[] args) {//4^4.x=5^4.y + 369//or: 256x = 625y + 369int sum = 625+369;while(true){int r = sum%256;if(r==0){int total = sum/256 * 5 + 1;System.out.format("total peaches:%d%n",total);break;}sum+=625;}}}
输出:
total peaches:3121
- 猴子分桃
- 猴子分桃问题
- 猴子分桃问题
- 猴子分桃
- 猴子分桃
- 猴子分桃问题
- 猴子分桃问题
- 猴子分桃
- 猴子分桃
- 猴子分桃问题
- 猴子分桃
- 猴子分桃
- AOJ194 猴子分桃
- SDUT 猴子分桃
- 猴子分桃
- 猴子分桃
- 猴子分桃
- 猴子分桃
- [C#]运算符“+”无法应用于“string”和“方法组”类型的操作数
- 万利达Zpad双雄征战平板江湖
- HashMap
- 原以为发现了xapian的一个bug
- magento -- ebay收购magento
- 猴子分桃
- Linux 命令缩写:
- https://bugzilla.redhat.com-从关注Bug开始
- 关于flashPlayer11不错的网站
- 两种Java容器类List和Set分析
- Android.mk 变量解释
- 实现业务系统中的用户权限管理--设计篇
- linux input system
- android 编译错误解决