问题描述:
有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,
第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29)
第一行有一个整数n,表示有n组测试数据(从第二行开始,每一行的数据为:第m天);
每一行数据是桃子的总个数
程序代码:
#include<stdio.h>
int main(){
int n,m,k,i;
scanf("%d",&n);
while(n--){
k=1;
scanf("%d",&m);
for(i=1;i<=m;i++){
k=2*(k+1); //由最后剩余一个桃子推得关系式
}
printf("%d\n",k);
}
return 0;
}
要点:
怎样找到天数m和桃子个数k的关系>>>>切入点是m天只剩一个桃子
递归?>>>>此题不需那么麻烦
需要动脑筋的:
从最后一天的k=1,推出前一天的k,再依次...所以有k=2(k+1)
至于有几天,那就循环几次算出k即为最初的桃子个数