1 题目
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
2 分析
本题若要假设第一天有多少个桃子,再利用上述规律,来验证第一天的假设是否正确,这种思路是很难完成的,那么最好的办法就是逆向求解,从最后一天,反推到第一天,注意循环时只用循环9
次,因为虽然题干给出的是第10天剩余1个,但是这不是参与计算的,只是初始条件,所以只用循环9
次
3 实现
#include <stdio.h>
int main() {
int x1 = 0;
int x2 = 1; // 最后一天只剩一个桃子
for (int i = 9; i > 0; i--) {
x1 = (x2 + 1) * 2; // 上一天的总数
x2 = x1; // 下一天的总数
}
printf("桃子总数为%d", x1);
return 0;
}
4 运行结果
桃子总数为1534