| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4729 人关注过本帖
标题:[求助]猴子分桃的问题!
只看楼主 加入收藏
weiloon520
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-1-8
收藏
 问题点数:0 回复次数:8 
[求助]猴子分桃的问题!
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个这   只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,  问海滩上原来最少有多少个桃子?
搜索更多相关主题的帖子: 猴子 
2005-01-09 00:21
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
收藏
得分:0 
????不存在吧!5个候子都分成5份怎么可能每次都多一个!那不是扔掉了5个桃子了吗!!这样的话第一支猴子应该可以平均分配阿!应该不会多的了!

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-01-09 08:16
weiloon520
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-1-8
收藏
得分:0 

答案是这个,看我看不懂它的意思!

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;} } }

2005-01-09 19:48
missyong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-12-19
收藏
得分:0 
我自己编的,我是初学,见笑。
#include "stdafx.h"
#include &lt;iostream.h&gt;
bool b=true;
int fen(int f)
{
 if(((f%5)==1)&amp;&amp;((f/5)!=0))
  b=true;
 else b=false;
 int ff=f/5;
 int fff=ff*4;
 return fff;
}
int main(int argc, char* argv[])
{
 int i;
    for(i=1;;i++)
 {
  int ii=i;
  for(int s=0;s&lt;5;s++)
  {
   fen(ii);
   if(b==true)
   {
    ii=fen(ii);
   }
   else break;
  }
  if(b==true) break;
 }
 cout&lt;&lt;"this number is"&lt;&lt;i&lt;&lt;endl;
 return 0;
}

答案是3121。

2005-01-10 11:33
amzyb
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2005-1-10
收藏
得分:0 
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
main(){
int i,m,j,k,count;
for(i=4;i&lt;10000;i+=4){//保证利用公式a(n+1)=a(n)*1.25+1所得数为整数
 count=0;
 m=i;
 for(k=1;k&lt;=5;k++){
  j=5*m/4+1;
  m=j;//用来累计计算
  if(m%4==0){//保证这个数利用公式b(n+1)=b(n)*0.8-1所得到的b(n+1)为整数
   count++;//记录满足上述公式的次数,题目要求5次,即能够被5只猴子这样分
  }
  else{
   break;//如果没达到5,说明此数不满足,进入下一轮循环
  }
 }
 if(count==5){
  printf("%d\n",j);//应该是把最小的桃子数给打印出来
  break;
 }
}//for
return 0;
}

结果是12496
注:我进行了一些修改,你看一下!
2005-01-10 11:51
missyong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-12-19
收藏
得分:0 
你的结果是错误的,我的结果是正确的。

因为这个判断if(m%4==0)只需要执行4次,而不是5次。

因为要求第五个猴子未拿前的桃子数必须被四整除,第四个也是,到第二个也是,第一个分前即最初的值可以不被4整除。

所以,这一段:

if(count==5){
  printf("%d\n",j);//应该是把最小的桃子数给打印出来
  break;
}

应改为count&gt;=4。

2005-01-10 13:19
missyong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-12-19
收藏
得分:0 
对不起,这个判断if(m%4==0)是要执行5次的。

只是count==5应改为count&gt;=4。

2005-01-10 13:21
missyong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-12-19
收藏
得分:0 
按照你的方法,我的程序,结果还是3121

#include "stdafx.h"
#include &lt;iostream.h&gt;
bool b=true;
int value;
int fen(int f)
{
 int ff=f*5+1;
 if((ff%4)==0)
  b=true;
 else b=false;
 int fff=ff/4;
 value=ff;
 return fff;
}
int main(int argc, char* argv[])
{
 int i;//i is the initial value which be devided by 5 at the fifith time.
    for(i=1;;i++)
 {
  int ii=i;
  int s;
  for(s=0;s&lt;5;s++)
  {
   ii=fen(ii);
   if(b!=true)
    break;
  }
  if(s==4) break;//it is OK that the program can be executed to s=4.
 }
 cout&lt;&lt;"this number is"&lt;&lt;value&lt;&lt;endl;
 return 0;
}

2005-01-10 13:25
amzyb
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2005-1-10
收藏
得分:0 
恩,你说的对!
我好像做成了6只猴子的结果了!
正如你所说的正确答案是3121
谢谢!:)
2005-01-10 14:14
快速回复:[求助]猴子分桃的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016591 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved