您的位置:首页 > 职场人生

五只猴子分桃,算法&面试

2012-10-29 09:27 393 查看
1.五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?

参考答案:先给这堆桃子加上4个,设此时共有X个桃子,最后剩下a个桃子.这样:

第一只猴子分完后还剩:(1-1/5)X=(4/5)X;

第二只猴子分完后还剩:(1-1/5)2X;

第三只猴子分完后还剩:(1-1/5)3X;

第四只猴子分完后还剩:(1-1/5)4X;

第五只猴子分完后还剩:(1-1/5)5X=(1024/3125)X;

得:a=(1024/3125)X;

要使a为整数,X最小取3125.

减去加上的4个,所以,这堆桃子最少有3121个。

JAVA编程实现:

public class Tao {
public static void main(String[] args) {
int monkey=1;//要分桃的猴子数
int peaches=1;//桃的总数
int peach=1;//每次分桃的总数
//循环进行给每个猴子分桃
while(monkey<=5)
{
//如果成功分桃
if(peach%5==1&&peach/5!=0)
{
//可分桃的总数为现在的4/5
peach=(peach/5)*4;
//换下一个猴子
monkey++;
}
//如果失败,重新分桃这时可分桃数量加1
else
{
peaches++;
peach=peaches;
monkey=1;
}
}
System.out.println("桃的最小总数为:"+peaches);
}
}
编程部分为原创,算法参考链接:/article/1360517.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: