难倒少年班的题目

kingsong 2001-08-03 03:26:40
以下转贴
-------------------------------------------------------------
1979年,诺贝尔奖获得者李政道教授到中国科技大学讲学,他给少年班的同学出了这样一道算术题:有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第2,3,4,5只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成5份.问这堆桃子至少有多少只.据说没有一个同学能当场做出答案.李教授说用常见的方法计算很繁,问题的关键在于打破常规思维.
-------------------------------------------------------------
我是列了五个式子,消去中间变量后,得到
256X=3125M+2101
由于X、M都是整数,得到最小的X=3121,M=255
即有3121个桃子

不知道“打破常规思维”如何做?
...全文
3876 96 打赏 收藏 转发到动态 举报
写回复
用AI写文章
96 条回复
切换为时间正序
请发表友善的回复…
发表回复
ky640 2001-08-10
  • 打赏
  • 举报
回复
对不起各位我上面给的答案给错了(理解错了的缘故),不是3906,应该是3121,解法如下:
设最后一个猴子分后每堆桃子为X,则总数为
5/4(5/4(5/4(5/4(5/4X+1)+1)+1)+1)+1=53(X+4)/1024+3X+8
显然总数应为整数,故X=1020,代进去则为3121。
程序猿1234567 2001-08-09
  • 打赏
  • 举报
回复
kingsong(牛大锅):
回复结了的帖子你还能得分吗?(纯属好奇)
程序猿1234567 2001-08-09
  • 打赏
  • 举报
回复
设有n个猴子,每次要扔掉m个桃子,m,n>0,求桃子的最小数
TOTAL = X * N ^ N - M * (N -1)
X = 1, 2, 3, 4 …………
X >= M/(N-1)^(N-1)
kingsong 2001-08-09
  • 打赏
  • 举报
回复
3121绝对正确,注意拿走的是1/5 ,剩下的是4/5。3906的是剩下1/5.

★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★

大家有兴趣来这里讨论,这里帐已经结了
http://www.csdn.net/expert/topic/228/228071.shtm

★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★
kingsong 2001-08-09
  • 打赏
  • 举报
回复
后一个帖子才75个人看,前一个有3356个(乖乖龙的东,快赶上灌水了),且大部分是在前一贴子结帐和后一帖子出来之间,呵呵
不说也,就此打住
程序猿1234567 2001-08-09
  • 打赏
  • 举报
回复
嘿嘿,kingsong(牛大锅),你不是打广告了吗:

主  题:●猴子分桃子(续)
作  者:kingsong
所属论坛:数据算法
问题点数:20
回复次数:12
发表时间:2001-8-8 8:16:21


原题如下
1979年,诺贝尔奖获得者李政道教授到中国科技大学讲学,他给少年班的同学出了这样一道算术题:有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第2,3,4,5只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成5份.问这堆桃子至少有多少只.据说没有一个同学能当场做出答案.李教授说用常见的方法计算很繁,问题的关键在于打破常规思维.
讨论请见:http://www.csdn.net/expert/topic/222/222324.shtm

现讨论其通解:设有n个猴子,每次要扔掉m个桃子,m,n>0,求桃子的最小数
我觉得应该是:Total=n^n-(m*n-m)
但不知道是否是最小解,各位意见如何



kingsong 2001-08-09
  • 打赏
  • 举报
回复
yanyongyuan(程序猿,低智商灵长类动物):我得的是参与分吗?怎么算的?好像参与分没怎么增加啊?不懂
我也好奇,这么多人是从哪里看到这贴子的,热点问题?最新帖子?都没有啊
woodytock 2001-08-08
  • 打赏
  • 举报
回复
同样还有中央电视台李开复的一道题:1000个苹果装到10个箱子里,无论你卖多少,都可以整箱的卖,请问怎么装?
woodytock 2001-08-08
  • 打赏
  • 举报
回复
可以用5进制来考虑!将桃子的数目分为几部分,每个猴子人掉一个后均为5的倍数故为一个6位的5进制数,然后再加上第一个猴子扔掉的桃子,即为111111转化为10进制即为3906
steven_cheng 2001-08-08
  • 打赏
  • 举报
回复
题目出得不错,开眼了:)
ky640 2001-08-08
  • 打赏
  • 举报
回复
woodytock(般若多罗密)的方法确实妙极,小弟佩服至极。
ky640 2001-08-08
  • 打赏
  • 举报
回复
结果不是3121,而是3906。
式子很简单:5*(5*(5*(5*(5*x+1)+1)+1)+1)+1
取X最小则为1+5+5^2+5^3+5^4+5^5=3906
程序猿1234567 2001-08-08
  • 打赏
  • 举报
回复
更正:

TOTAL = M * X ^ X -(X - Y) M = 1,2,3,4 …………

这是一个通解,当M = 1时有最小值。
程序猿1234567 2001-08-08
  • 打赏
  • 举报
回复
哎呀!
想不到帖子结了还能继续膨胀,
都这么大了!
大家过奖了,其实一看帖子,我也曾经得出3096的答案,惭愧,惭愧。
很高兴能在没做过的情况下把它解出来。
再看见这样的题,就没法锻炼自己的思维了。:-(

普遍一点:
X个猴子分桃,每次扔Y个,拿1份剩X-1份。
TOTAL = M * X * X - (X - Y) M = 1,2,3,4 ……
(X和X-1肯定是互质的!)
bedlamite 2001-08-08
  • 打赏
  • 举报
回复
同意victorchen_2000(微力) !

up!
wwlsq 2001-08-08
  • 打赏
  • 举报
回复
我写的C++程序:

#include <iostream.h>

float monkey(const n,const i)
{
if (n==5) return (float)4*i;
return((monkey(n+1,i)*5)/4+1);
}


main()
{
int n=0,i;
float ftotal;
int ltotal;
for(i= 0;i<10000;i++)
{
ftotal=monkey(n,i);
ltotal=(unsigned long)ftotal;
if(ftotal==ltotal)
break;

}
//cout<<"i="<<i<<endl<<"ltotal="<<ltotal<<endl;
cout<<"共有"<<ftotal<<"个桃子。"<<endl;
}
共有3121个.
victorchen_2000 2001-08-08
  • 打赏
  • 举报
回复
int m=3121;
for (int i=0;i<5;i++)
{
monkey[i] = (m-1)/5=624,m = m-1-monkey[i];
}
3121->2496->1996->1596->1276 如果再拿就剩1020个,不能继续了。
3906->3124->再怎么分?
kingsong 2001-08-08
  • 打赏
  • 举报
回复
1000个苹果装到10个箱子里,无论你卖多少,都可以整箱的卖,请问怎么装?
1,2,4,8,16,32,64,128,256,489
不过猴子这道题不是这么解的
kumat 2001-08-08
  • 打赏
  • 举报
回复
1000个苹果装到10个箱子里,无论你卖多少,都可以整箱的卖,请问怎么装?
用二进制来考虑就行了。
kumat 2001-08-08
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
int x, y;
int count;
int ok;

ok = 0;
x = 1; // x: The last monkey takes how many
while(x < 10000 && ok == 0){
count = 4; // Remain monkeys
y = 5 * x + 1; // y: Remains (Before the monkey takes)
while(count > 0){
y = 5 * y;
if(y % 4 != 0)
break;
else
y = y / 4 + 1;
count --;
}
if(count == 0)
ok = 1;
x ++;
}
if(ok)
printf("Result: x=%d y=%d\n", x - 1, y);
else
printf("Nothing!\n");
}
加载更多回复(76)

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧