社区
新手乐园
帖子详情
猴子问题
gangzichh
2005-11-23 10:24:40
有一堆桃子 由5个猴子 第一个猴子把它分成5堆,还剩1个,他拿了一堆,然后把桃子混合,第二个猴子把剩下的,再分5堆,剩1个,他也拿了一堆,其他猴子依次类推,最后剩5堆,求原来的桃子数
...全文
543
29
打赏
收藏
猴子问题
有一堆桃子 由5个猴子 第一个猴子把它分成5堆,还剩1个,他拿了一堆,然后把桃子混合,第二个猴子把剩下的,再分5堆,剩1个,他也拿了一堆,其他猴子依次类推,最后剩5堆,求原来的桃子数
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gangzichh
2005-12-03
打赏
举报
回复
答案是有了,但是我有点晕呀,谁能讲一讲呢
czg516
2005-11-28
打赏
举报
回复
学习,
逆退思想
dlttyy
2005-11-27
打赏
举报
回复
//寒..终于改过来了...见笑啦各位...答案3126..试了可以..:)~
/*有5个猴子分一堆桃子, 第一个猴子把它分成5堆, 还剩1个, 他拿了一堆,
然后把剩下的桃子混合, 第二个猴子把剩下的再分5堆, 剩1个, 他也拿了一堆,
然后把剩下的桃子混合, 其他猴子依次类推,最后第5个猴子拿完后,
剩下的桃子刚好可以分为5堆, 求原来的桃子数 */
#include<iostream>
using namespace std;
int main()
{
int func(int,int);
int taozi;
for(int i=1;i<=10000;i++)
{
if(func(6,5*i)!=0)
{
taozi=func(6,5*i);
cout<<taozi<<endl;
break;
}
}
system("pause");
return 0;
}
int func(int a,int b)
{
int t;
if(a==1) return b;
else t=(func(a-1,b)-1)*5/4+1;
if(t%5==1) return t;
return 0;
}
dlttyy
2005-11-27
打赏
举报
回复
验证了一下.我程序好像答案还是错了~~
dlttyy
2005-11-27
打赏
举报
回复
//初学c++,写了一个下午了.呜呜.不知道还有没有错.或那里还可以改善,请指教咯..
/*有5个猴子分一堆桃子, 第一个猴子把它分成5堆, 还剩1个, 他拿了一堆,
然后把剩下的桃子混合, 第二个猴子把剩下的再分5堆, 剩1个, 他也拿了一堆,
然后把剩下的桃子混合, 其他猴子依次类推,最后第5个猴子拿完后,
剩下的桃子刚好可以分为5堆, 求原来的桃子数 */
#include<iostream>
using namespace std;
int main()
{
int func(int,int);
int taozi;
for(int i=1;i<=10000;i++)
{
if(func(5,5*i)!=0)
{
taozi=func(5,5*i);
cout<<taozi<<endl;
break;
}
}
system("pause");
return 0;
}
int func(int a,int b)
{
int t;
if(a==1) {t=b;return t;}
else t=func(a-1,b)*5/4+1;
if(t%5==1&&t!=1) return t;
return 0;
}
gangzichh
2005-11-25
打赏
举报
回复
这是我的错呀,我没有把题目说清楚的呀
问题1:有5个猴子分一堆桃子, 第一个猴子把它分成5堆, 还剩1个, 他拿了一堆, 然后把剩下的桃子混合, 第二个猴子把剩下的再分5堆, 剩1个, 他也拿了一堆, 然后把剩下的桃子混合, 其他猴子依次类推,最后第5个猴子拿完后, 剩下的桃子刚好可以分为5堆, 求原来的桃子数 )
代码是:
#include <iostream>
int main()
{
int i;
int nsum;
for(i=0; i<100000; i+=5)
{
int j;
nsum = i;
for(j=0; j<5; ++j)
{
nsum = (nsum * 5 - 1);
if(nsum % 4 != 0)
break;
nsum /= 4;
}
if(j==5)
std::cout<<nsum<<std::endl;
}
return 0;
}
要是那个让猴子吃了呢?
那代码就是这个:#include <iostream>
int main()
{
int i;
int nsum;
for(i=0; i<1000000; i+=5)
{
int j;
nsum = i;
for(j=0; j<5; ++j)
{
nsum = nsum * 5;
if(nsum % 4 != 0)
break;
nsum /= 4;
nsum += 1;
}
if(j==5)
std::cout<<nsum<<std::endl;
}
return 0;
}
fiftymetre
2005-11-24
打赏
举报
回复
此为老问题了, 经典c程序100例就有的。嘿嘿。
π萧筱雨 (18803603) 12:19:00
点点
责令你去解猴子问题去
π萧筱雨 (18803603) 12:19:07
http://community.csdn.net/Expert/topic/4414/4414049.xml?temp=.6419947
π萧筱雨 (18803603) 12:19:19
师傅我搞不定了
点雨点(32067090) 12:19:28
。。。。。。。。
多值得偶收藏的一些话哟哈哈。。。。。。。
fiftymetre
2005-11-24
打赏
举报
回复
main()
{int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{ count=0;
m=i;
for(k=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if(j%4==0)
count++;
else
break;
}
i=m;
if(count==4)
{printf("%d\n",count);
break;}
}
fiftymetre
2005-11-24
打赏
举报
回复
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
happydivid
2005-11-24
打赏
举报
回复
不对,应该是大于等于5的任意数
happydivid
2005-11-24
打赏
举报
回复
不可能知道有多少桃子,因为这个剩下五堆,五堆的桃子加起来可以为任意数
gangzichh
2005-11-24
打赏
举报
回复
好象是答案不对呀
gangzichh
2005-11-24
打赏
举报
回复
我要是C++的代码的,那个东西,有点多呀,我有点晕的呀
xiaocai0001
2005-11-24
打赏
举报
回复
最后剩余5个是无解的...
我上面的推导还漏了一点
由于每次分法都是整数, 则题意隐含如下两个条件
(A) Y mod 5 = 0
(B) f(0) 为整数
(B) f(0) 为整数
应该改为
(B) f(0), f(1), ..., f(n) 都为整数.
laoren_80
2005-11-24
打赏
举报
回复
应该是最后剩五个吧!!
xiaocai0001
2005-11-24
打赏
举报
回复
原题意理解:
有5个猴子分一堆桃子, 第一个猴子把它分成5堆, 还剩1个, 他拿了一堆, 然后把剩下的桃子混合, 第二个猴子把剩下的再分5堆, 剩1个, 他也拿了一堆, 然后把剩下的桃子混合, 其他猴子依次类推,最后第5个猴子拿完后, 剩下的桃子刚好可以分为5堆, 求原来的桃子数 )
以下根据我上面对题意的理解所给出的解答.
设f(n)表示第n个猴子拿过后剩下的桃总数.
由题意可知f(n) = 4 * (f(n-1) - 1) / 5 + 1
即 f(n)-1 = (f(n-1) - 1) * 4/5 .......(1)
(1)即为一个差分方程.
题意就是已知f(5) = Y, 求f(0) = ?
由(1)差分方程知
f(0) - 1 = (5/4)^n * (f(n) - 1)
将n=5, f(5) = Y 代入得
f(0) = (5/4)^5 * (Y-1) + 1
由于每次分法都是整数, 则题意隐含如下两个条件
(A) Y mod 5 = 0
(B) f(0) 为整数
f(0) = (5/4)^5 * (Y-1) + 1
= 3125 * (Y-1) / 1024 + 1
由f(0)为整数
而3125不能整除1024, 则必有(Y-1)整除1024
即 Y mod 1024 = 1
所以题意化为求如下的不定方程组
(1) Y mod 5 = 0
(2) Y mod 1024 = 1
Y = 5*m = 1024*n+1
即 1024*n - 5*m + 1 = 0
解该一次不定方程, 得:
特解m=205, n = 1
通解 m = 205 + 1024*t , n = 1 + 5*t (t=0, 1, 2, ... )
所以 Y = 5*m = 1025 + 5120*t (t=0, 1, 2, ...)
f(0) = 3126 + 15625*t (t=0, 1, 2, ...)
明显, f(0)有无穷多解, 但不是任意解
min{f(0)} = 3126
满足题意的最小值 f(0) = 3126
dragonzxh
2005-11-24
打赏
举报
回复
冒似钱能C++书上的课后习题...........
cdo
2005-11-24
打赏
举报
回复
5堆应该每堆的数量相同。
yefu2000
2005-11-24
打赏
举报
回复
估计原题是分成数目相同的5堆~
aishuishui021
2005-11-24
打赏
举报
回复
顶原题,估计是说错了吧这个用个递归就可以了!!!
加载更多回复(9)
猴子
分桃子
问题
题目描述 老
猴子
辛苦了一辈子,给那群小
猴子
们留下了一笔巨大的财富——一大堆桃子。老
猴子
决定把这些桃子分给小
猴子
。 第一个
猴子
来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老
猴子
,自己拿走其中的一堆。 第二个
猴子
来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老
猴子
,自己拿走其中的一堆。 后来的小
猴子
都如此照办。最后剩下的桃子全部留给老
猴子
。 这里有n只小猴...
猴子
分桃
问题
一,五只
猴子
分桃。半夜,第一只
猴子
先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只
猴子
起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只
猴子
也都是 这样分的。问:这堆桃至少有多少个? 第1只
猴子
:x=x-(x-1)/5-1 == 4/5(x-1) 如果有1只
猴子
,那桃子数为:5^1-4
猴子
拿香蕉的
问题
这个题目挺有意思,但是不难。
猴子
要把TotalTotal个香蕉搬回DD米的老巢,每次能够拿的最大值是maxmax,假设
猴子
很贪嘴,每走一米就要吃一个香蕉,那么问
猴子
最多能够拿几个回去?我们来仔细分析一下这个
问题
(1)...(1)...首先可以肯定
猴子
每次拿最多的香蕉走是一定最划算的,因为背的太少可能一下就吃完了,假设拿b个和b-1个走一米,得到的结果是将b-1和b-2个香蕉向目的地运了一米,但是都只
猴子
偷桃
问题
http://blog.csdn.net/snow_5288/article/details/52561882
问题
描述: /*有一群
猴子
,去摘了一堆桃子*/ /*商量之后决定每天吃剩余桃子的一半*/ /*当每天大家吃完桃子之后,有个贪心的小猴都会偷偷再吃一个桃子*/ /*按照这样的方式
猴子
们每天都快乐的吃着桃子*/ /*直到第十天,当大家再想吃桃子时,发现
Python
猴子
吃桃
问题
猴子
吃桃
问题
:
猴子
第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半再加一个。到第10天早上再吃时,发现只剩下一个桃子。求第一天共摘了多少个桃子。
新手乐园
33,316
社区成员
41,770
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章