母牛的故事

2022-05-07 08:03:11 字數 1666 閱讀 7752

description

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?

input

輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n(0< n< 55),n的含義如題目中描述。

n=0表示輸入資料的結束,不做處理。

output

對於每個測試例項,輸出在第n年的時候母牛的數量。

每個輸出佔一行。

sample input24

50sample output24

6分析

根據題意,先列出前幾年的牛頭數,試著找找規律:

第n年:

n=1n=2

n=3n=4

n=5n=6

n=7n=8

n=9fn頭牛?

f1=1

f2=2

f3=3

f4=4

f5=6

f6=9

f7=13

f8=19

f9=28

在列出這個序列的過程中,應當能找出規律。

以n=6為例,fn=9頭牛可以分解為6+3,其中6是上一年(第5年)的牛,3是新生的牛(因為第3年有3頭牛,這3頭在第6年各生一頭牛)。

我們可以得出這樣乙個公式:fn=fn-1+fn-3

再理解一下,fn-1是前一年的牛,第n年仍然在,fn-3是前三年那一年的牛,但換句話說也就是第n年具有生育能力的牛,也就是第n年能生下的小牛數。

程式設計序,求解這個公式就行了。

當然,第1-3年的數目,需要直接給出。

很像斐波那契數列,有不一樣之處,道理、方法一樣。其實,在程式設計之前,講究先用這樣的方式建模。

下面給出參考程式:

[cpp]view plain

copy

print

?//解法1:迭代解法  

#include 

using namespace std;  

int main()  

cout

}  return 0;  

}[cpp]view plain

copy

print

?//解法2:定義遞迴函式(效率低,不建議用)  

#include 

using namespace std;  

int f(int n);  

int main()  

return 0;  

}  int f(int n)  

[cpp]view plain

copy

print

?//解法3:用陣列  

#include 

using namespace std;  

int main()  

;  for(i=4;i<=55;i++)  

f[i]=f[i-1]+f[i-3];  

while(cin>>n&&n!=0)  

return 0;  

}  

母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0 對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。245 0 246 include...

母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。245 0 2 46 lcy inc...

母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。245 02 46lcy c語言程式...