猴子吃桃的問題

2021-08-16 09:24:42 字數 597 閱讀 4914

面試時被這個題懵了: 猴子第一天摘下若干個桃子, 當機吃了一半, 還不過癮又吃了乙個, 以後每天早上吃前天剩下的一半零乙個, 第十天早上想吃發現就剩乙個, 求第一天共摘了幾個.

其實很簡單, 從第十天開始觀察, 第十天只剩下1個, 那麼第九天沒開始吃的時候有2*(1+1)個(因為每天要吃當前數量的一半+乙個, 所以第十天剩下的乙個就是[2*(1+1)]/2-1=1個. 

數列改一下從第10天開始反倒算第10天當作第1天算吐出來(吐是比喻)的桃子

f(n) = 2*[f(n-1)+1], f(1) = 1;

f(n)+2= 2*[f(n-1)+2] 

f(n)+2=[2^(n-1)]*[f(1)+2]

f(n) = [2^(n-1)]*[f(1)+2]-2

f(10)=(2^9)*(1+2)-2=1534(個)

用**計算就更簡單了:

#include int main(int argc, char **argv)

printf("%d peaches were picked on the first day.\n", fn);

return 0;

}

猴子吃桃問題

猴子吃桃問題 時間限制 3000 ms 記憶體限制 65535kb 難度 0 描述 有一堆桃子不知數目,猴子第一天吃掉一半,又多吃了乙個,第二天照此方法,吃掉剩下桃子的一半又多乙個,天天如此,到第 m天早上,猴子發現只剩乙隻桃子了,問這堆桃子原來有多少個?m 29 輸入 第一行有乙個整數 n,表示有...

猴子吃桃問題

有乙隻猴子第一天摘下若干個桃子,當即吃掉了一半,有多吃了乙個 第二天又將剩下的桃子吃掉一半,有多吃了乙個 按照這樣的吃飯每天都吃掉前一天剩下的一半又多乙個。到了第10天,就剩下乙個桃子。問題,這個桃子第一天摘了多少個桃子。include int main printf d n ans return ...

猴子吃桃問題

猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個 第二天早上又將剩下的桃子吃掉一半,又多吃了乙個。以後每天早上都吃了前一天剩下的一半零乙個。到第10天早上想再吃 時,見只剩下乙個桃子了。求第一天共摘了多少。方法一 public class test w w 1 2 syst...