1020【编程入门】猴子吃桃的问题
题目描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又
多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第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【编程入门】猴子吃桃的问题相关推荐
- [编程入门]猴子吃桃的问题
猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个. 到第N天早上想再吃时,见只剩下 ...
- [编程入门]猴子吃桃的问题(JAVA解法)
题目描述 猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个. 到第N天早上想再吃时 ...
- C++ 编程练习——猴子吃桃问题
目录 编程练习--猴子吃桃问题 编程练习--猴子吃桃问题 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个:以此往后,到第十天早上想再吃时 ...
- C语言编程:猴子吃桃问题
问题描述:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见 ...
- python猴子偷桃递归_用matlab编程解决猴子吃桃问题
满意答案 askasp9 2013.09.03 采纳率:50% 等级:12 已帮助:12317人 我也来凑个热闹,利用递归算法,得到桃子数目 将下面程序复制,建一个StealPeach.m文件, ...
- 【C语言编程】猴子吃桃问题。
题目 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,就只剩一个桃子了 ...
- python猴子吃桃问题(while循环)_【Python】【demo实验22】【练习实例】【猴子吃桃问题】...
原题: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只 ...
- 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略
编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...
- 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现
编程笔试(解析及代码实现):猴子吃桃.猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个. 第二天早上又将剩下的桃子吃了一半,还是不过瘾,又多吃了一个.以后每天都吃前一天剩下的一半再加一个 ...
最新文章
- ACMNO.11 一个数如果恰好等于它的因子之和,这个数就称为“完数“。 例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数“。 编程序找出N之内的所有完数,并按下面格式输出其因子
- PPT插入文本框但是字体并不是想要的
- linux的命令行操作和shell的区别
- 使用Decision Tree对MNIST数据集进行实验
- webpack4.x中使用postcss-loader和autoprefixer给css3样式添加浏览器兼容
- ioctl中的ifconf ifreg 结构
- 请你说明一下TreeMap的底层实现?
- java笔记:自己动手写javaEE框架(七)--使用JSON和Ajax技术
- 【OS学习笔记】二十六 保护模式八:任务门---任务切换
- 张凯江:架构能力-“构建”世界的能力
- 树莓派 树莓派 编c++_树莓派6年
- 拥有所有归档文件,但没有备份情况下的数据文件恢复
- oracle 转储 mysql_Oracle中DUMP的转储方法
- 操作系统习题解答 (张尧学) 第一章
- asp.net连接mssql server的方式
- 推荐系统实战1——什么是推荐系统与常见的推荐系统评价指标
- 中级职称考试 计算机 英语考试,中级职称工程师职称计算机考试需要考过哪些模块...
- ensp VRRP配置2
- iOS大神牛人的博客集合
- android 远程管理,教你如何在Android上远程控制电脑