一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
一、输入格式:
输入在一行中给出正整数N(1<N≤10)。
二、输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
#include<stdio.h>
int main()
{
int a,b=1,i;
scanf("%d",&a);
for(i=1;i<a;i++)
{
b=(b+1)*2;
}
printf("%d",b);
return 0;
}
采用逆向思维,每次吃一半再多吃一个桃子,也就是(剩下的+1)*2 就是前一天剩下的数量,一次往前推,循环N次。
三、vc2010编译结果:

该博客介绍了如何通过逆向思维解决一个数学问题:一只猴子每天吃掉前一天桃子的一半再加一个,最后剩下一个桃子。通过输入天数N,程序计算出第一天猴子摘了多少个桃子。示例中给出了输入3天后的结果,输出为10。程序使用C语言实现,通过循环N次来反推初始桃子的数量。
1628

被折叠的 条评论
为什么被折叠?



