1.问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
2.解答:
循环倒推。从第一天到第N-1天每天都是先吃一半,再吃一个,那么我们就可以从第N-1天往前推,先加一个,再乘以2。
(1)注意吃桃子的顺序,先吃一半,再吃一个;
(2)到了第N天发现还剩一个,说明第N天并没有吃;
(3)注意倒推时计算的顺序,先加1,再乘2。
3.代码:
#include<stdio.h>//头文件int main()//主函数{ int i,N,s=1; //定义的s要赋值为1. scanf("%d",&N); for(i=1;i<N;i++) //注意循环次数,若是 N=10,则要循环 9 次 { //因为猴子是第 N 天就只剩 1 个桃子了,所以第 N 天就没有算上 s=(s+1)*2; //从第 N 天往回推,每次都是 s 个桃子加 1 个再乘 2 最后当 i=N 时结束循环 } printf("%d",s); //最后输出原来的桃子数 s return 0;//函数返回值为0}
4.编译结果:
输入:6
输出:94