欢迎来到天天文库
浏览记录
ID:38138513
大小:83.41 KB
页数:4页
时间:2019-06-02
《猴子吃桃问题(C++)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、猴子吃桃问题猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第30天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。解:根据题意,设s为第i天所拥有的桃子数(注:该处某i天拥有的桃子数是指当天未吃之前的桃子总数),则前后相邻两天之间的桃子数有如下关系:ss=s−(i+1),将此式转化为s=2s+2i+1i2ii+1则有:s=1(i=30)is=2s+2(1≤i<30)ii+1此时由于最后一天(第30天的)桃子总数是已知的,根据上述公式可推出第29天
2、的桃子总数;而根据第29天的又可以推出第28天的桃子总数,……,重复上述工作,就可以推出第1天的桃子总数。推导过程如下图:天数i第i天桃子未吃前总数si30s=13029s=2×(s)+2=4293028s=2×(s)+2=102829............1?则相应算法流程如下:1)s=1,即最初的s为130i+12)i从29循环到1,反复执行如下操作:s=2s+2ii+1s=si+1i3)输出s的值,即为所求结果。1相应程序如下:#include#include#defineN30voidmain(){inti,si,s;s=1;
3、//第30天桃子总数为1个for(i=N-1;i>=1;i--){si=2*s+2;s=si;printf("第%2d天的桃子总数为%d个",i,s);}printf("共%d天,第一天的桃子总数为%d",N,si);system("pause");}
此文档下载收益归作者所有