题目描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又
多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
输入
N
输出
桃子总数
样例输入
10
样例输出
1534
解析:本题中最大的陷阱在于第n天并没有按照上述规律吃桃子,因此第n天余下的1个桃子与第1天的总数没有规律上的联系,但在第n-1天的
余量与总数x是有关系的,因此我们可以用第n-1天的余量与x的关系来求得x的值。假设x足够大,通过下图中的结果(左侧为第n天所吃的
桃子数,右侧为当天的余量)那么第n天的余量为:


(x/(2的n次方))-((2的n次方减1)/(2的n-1次方))---------算式1
实际上x为有限的,所以第n天的余量1和x并没有这个关系,但是进一步想,第n-1天的余量与x是有这个关系的,因此将n-1代入算式1中,即可获得n与有限x的关系,最终算得x的值等于
(2的n次方)+(2的n-1次方)-2------------算式2
说到这里,这道题就迎刃而解了,在编程中,我们只需要使用头文件math中的指数函数pow() 即可解决问题了,具体代码如下:
#include <stdio.h>
#include <math.h>

int main(void)
{
int x,n;
scanf("%d",&n);
x = pow(2,n) + pow(2,(n - 1)) - 2;
printf("%d\n",x);
return 0;
}
总结:本人最开始的时候把解析中的算式1当作最终的关系式,结果代入数值时,结果差异很大,原因就在于最初没有发现解析中所提到的“陷阱”;经过一番思索,猜得出x与n之间正确的关系表达式,即算式2;在自行解决本题目之后,发现网上另有其它解法,这里稍微一提:使用倒推的方法求出第一天的总数,其中规律为第n天的余量加上1等于第n-1天余量的一半,即:
(S(n) + 1) X 2 =S(n - 1);(S(n)为第n天的余量)
这样倒推n-1次即可获得第1天的总量。

1020【编程入门】猴子吃桃的问题相关推荐

  1. [编程入门]猴子吃桃的问题

    猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个. 到第N天早上想再吃时,见只剩下 ...

  2. [编程入门]猴子吃桃的问题(JAVA解法)

    题目描述 猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个. 到第N天早上想再吃时 ...

  3. C++ 编程练习——猴子吃桃问题

    目录 编程练习--猴子吃桃问题 编程练习--猴子吃桃问题 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个:以此往后,到第十天早上想再吃时 ...

  4. C语言编程:猴子吃桃问题

    问题描述:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见 ...

  5. python猴子偷桃递归_用matlab编程解决猴子吃桃问题

    满意答案 askasp9 2013.09.03 采纳率:50%    等级:12 已帮助:12317人 我也来凑个热闹,利用递归算法,得到桃子数目 将下面程序复制,建一个StealPeach.m文件, ...

  6. 【C语言编程】猴子吃桃问题。

    题目 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,就只剩一个桃子了 ...

  7. python猴子吃桃问题(while循环)_【Python】【demo实验22】【练习实例】【猴子吃桃问题】...

    原题: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只 ...

  8. 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略

    编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...

  9. 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现

    编程笔试(解析及代码实现):猴子吃桃.猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个. 第二天早上又将剩下的桃子吃了一半,还是不过瘾,又多吃了一个.以后每天都吃前一天剩下的一半再加一个 ...

最新文章

  1. kalilinux设置开机自启动:update-rc.d -f apache2 defaults
  2. MongoDB 3.0新增特性一览
  3. 自定义View 实现软键盘实现搜索
  4. python 爬虫 记录
  5. 高考成绩查询接口(转)
  6. cURL在Web渗透测试中的应用
  7. Git命令集十三——快照操作
  8. Python day7之mysql
  9. linux 进程的缓存区,Linux-标准I/O缓冲区位于进程中那个位置,堆区?栈区?还是其他位置?...
  10. .net core 后台 post设置等待时间_[vueelementadmin]前端发送的post请求的数据,后端接收不到并报EOFException异常的解决方案...
  11. Android OpenGLES2.0(十六)——3D模型贴图及光照处理(obj+mtl)
  12. 概率论与数理统计思维导图_数学思维到底有多重要?这个学科往往影响国家实力...
  13. 5.29 狡猾的商人(把后天的写了,老师不会打我吧)
  14. editplus配置刷新
  15. windows加linux双系统安装方法
  16. HTML+CSS+JS 实现全屏下雪动画背景用户登录注册表单
  17. C语言 输出数组中的全部元素的三种方法
  18. 谷歌浏览器怎么更新升级 谷歌浏览器手动更新方法
  19. 基于 OAI 部署私有的 4G EPS
  20. Java岗面试:mysql破解版百度云

热门文章

  1. 华为p40android auto怎么用,华为手机无线投屏到车载导航,华为车机互联教程
  2. mc官方认证服务器_有关MC *认证的更多信息*
  3. 【前端基础】网页的发展历史
  4. JS验证字符串的长度(区分中英文)
  5. MPF模块化策略框架
  6. 计算机组成原理机器指令in,计算机组成原理实验第五讲.ppt
  7. Aspose-words 18.8破解过程
  8. 很牛X的linux发行版诞生,融合debian、opensuse、gentoo、arch、grml
  9. 定时改变App主题的方案
  10. 安全技术学习——NAT444实验