问题:猴桑第一天兴高采烈地采了好多桃子,并且吃了一半,太好吃了!,然后又多吃了一个,第二天又吃了一半多一个,以此类推,到第十天的时候,再想吃的时候就剩下1个桃子了。那么请问:第一天猴桑摘了多少桃子?
思路:
- 跟做数学题一样,先提取有用条件。
- (1)到第十天的时候,没有吃,就剩一个了,说明猴桑吃了9天——因此循环的时候,循环9天;
- (2)每次怎么吃的呢?每次总数的一半+1,最后设当前剩余量为1(因为题干中说了剩一个),从最后一层剩余1,倒推上一层的数量,从而得到关系式,设上一层为n,则n-(n/2+1)=n1,但由于不清楚n的具体值,因此需要给这个公式变换成关于n1的,即n=2*(n1+2);(整体乘2,去分母,化简即可),这样就得到了关系式
- (3)因为想要从下往上推,因此,关系式之后,给n1赋上新值,n1=n;
代码如下:
#include <stdio.h>
int main()
{
int n1=1;
int n;
int i;
for(i=0;i<9;i++)
{
n=2*(1+n1);
n1=n;
}
printf("总共有%d个桃子\n",n);
printf("第一天吃了%d个桃子",n/2+1);
return 0;
}