题目:
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。
思路:
要从第十天为1个桃子来到推出,第一天有多少个桃子
假设第一天有x个桃子
第1天开始桃子个数: x
第2天开始桃子个数: x = x / 2 -1
第3天开始桃子个数: x = x / 2 -1
...
第9天开始桃子个数: x = x / 2 -1
第10天开始桃子个数: x = 1
现在从第十天开始向第一天倒推
第10天开始桃子个数: x = 1
第9天开始桃子个数: x = (x + 1) * 2 //该表达式为从等号左边换到等号右边所得到的表达式
...
第2天开始桃子个数: x = (x + 1) * 2
第1天开始桃子个数: x = (x + 1) * 2
*/
4.
int main(int argc, const char * argv[])
{
int peach_num = 1;//第十天桃子数量
int day = 10;//一共吃了10天,因为10在后面需要用到,所以定义到for外边
for (; day>1; day--)
{
printf("第%d天,peach_num = %d\n", day,peach_num);
peach_num = (peach_num + 1) * 2;//前一天都是今天桃子数量+1,乘以2
}
printf("第%d天,peach_num = %d\n", day,peach_num);
return 0;
}
|