猴子分桃
来源:互联网 发布:上汽集团有限公司知乎 编辑:程序博客网 时间:2024/04/30 15:45
题目:
五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?
解题思路:
假设有X个桃子,第一次把X个桃子分成5份,恰好多了1,然后拿走一份!再这里,您应该想到借他4个不就正好5份了麽?然后每次都不是5份了麽?最后当前猴子拿走的也没多拿不是麽?举个例子说明一下吧,假设有5只猴子,第一次每份
(X-1)/5;如果我们借给他4个,每份不就是(X+4)/5吗?然后您会发现,(X+1)/5=(X-1)/5+1;每次都是如此,然后每次都能被5整除,这很显然,所以您应该懂了吧~{^_^}X=5^n-4
程序:package monkey;public class Test { public static void main(String[] args) {// System.out.println(d()); System.out.println(f(0.0)); } /** * 循环算法 * peach 分配完毕后剩余的桃子数 * count 分配之前的桃子数 * @return */ private static double d() { double count = 0.0; //死循环,一直到找到这个数为止 while (true) { //每次循环都要桃子数加一 count++; //由桃子总数算出第五个猴子分完后剩下的桃子数,而这个数必须是整数 double peach = count; for (int monkey = 5; monkey > 0; monkey--) { peach = (peach - 1) * 0.8; } //如果peach是整数,就返回桃子的总数量 if (peach % 1 == 0.0) return count; } } /** * 递归算法 * peach 分配完毕后剩余的桃子数 * count 分配之前的桃子数 * @param count * @return */ private static double f(double count) { count++; double peach = count; for (int monkey = 5; monkey > 0; monkey--) { peach = (peach - 1) * 0.8; } if (peach % 1 == 0.0) return count; else return f(count); }}
- 猴子分桃
- 猴子分桃问题
- 猴子分桃问题
- 猴子分桃
- 猴子分桃
- 猴子分桃问题
- 猴子分桃问题
- 猴子分桃
- 猴子分桃
- 猴子分桃问题
- 猴子分桃
- 猴子分桃
- AOJ194 猴子分桃
- SDUT 猴子分桃
- 猴子分桃
- 猴子分桃
- 猴子分桃
- 猴子分桃
- wcf跨域调用xml
- 智能手机主流系统解析:MeeGo触控操作体验堪比Android和iOS智能系统
- 高并发高流量网站架构
- Visual Studio 调试小技巧(1)-根据字符串内容添加断点
- 项目管理人力或时间问题
- 猴子分桃
- 了解架构师(转+原)
- Visual Studio 调试小技巧(2)-从查看窗口得到更多信息
- 手机操作系统开源软件
- 解决mybatis在oracle中null的问题
- android: RoundCornerImageView 图片视图 倒圆角
- struts中redirect与dispatch的区别
- 陆首群: 再谈“看好MeeGo是匹黑马”
- struts学习笔记3接收web前端前台传来的数据