题目:
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子?
思路:
逆向思维,从最后一天算起,最后一天剩一个,那么前一天就剩(1+1)*2个
因此设某一天剩桃子m
个,前一天桃子n个,往前类推即n=(m+1)*2
注意:n天最后一天只剩1个桃子,程序只需循环n-1次
代码示例:
#include<stdio.h>
int main()
{
int i,sum=1,n;
scanf("%d",&n);//n为天数 ,每天吃一半多一个
for(i=1;i<n;i++)
{
sum=(sum+1)*2;
}
printf("%d",sum);//sum为第一天的桃子数量
return 0;
}