難度0 猴子喫桃問題


問題描述:

有一堆桃子不知數目,猴子第一天喫掉一半,又多吃了一個,

第二天照此方法,喫掉剩下桃子的一半又多一個,
天天如此,到第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即爲最初的桃子個數



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章