杭電ACM2018
阿新 • • 發佈:2018-12-08
杭電ACM2018-母牛的故事
Time Limit:2000/1000 MS Memory Limit:65536/32768 K
Problem Description
有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?
Input
輸入資料由多個測試例項組成,每個測試例項佔一行,包括一個整數n(0n=0表示輸入資料的結束,不做處理。
Output
對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。
Sample Input
2
4
5
0
Sample Output
2
4
6
分析
每頭母牛從第四個年頭開始可以生一頭小母牛,如果設母牛出生第一年頭為1歲,第二年頭為2歲,第三年頭為3歲,第四年頭可產仔(不防設可以產仔的母牛均用3歲表示),即當小牛為三歲時下一年將會產仔。如下表:
其中:母牛列中3表示三歲以上的母牛,2表示2歲的母牛,1表示1歲的母牛
年份 | 母牛 | 數量 |
---|---|---|
1 | 3 | 1 |
2 | 31 | 2 |
3 | 321 | 3 |
4 | 3321 | 4 |
5 | 333,2,11 | 6 |
6 | 3333,22,111 | 9 |
7 | 333333,222,1111 | 13 |
程式碼如下:
#include<stdio.h> #include<stdlib.h> int main() { //temp記錄產仔數量,age表示不同年齡的母牛數量。 int n,i,temp,count,age[4]; while(scanf("%d",&n) != EOF){ if(n == 0) break; age[1] = age[2] = 0; age[3] = 1; count = 1; for(i=2;i<=n;i++){ //本年產仔數量是上一年3歲母牛的數量 temp = age[3]; count += temp; age[3] = age[3] + age[2]; age[2] = age[1]; age[1] = temp; } printf("%d\n",count); } return 0; }