兔子的繁殖問題(斐波那契數列)
阿新 • • 發佈:2018-12-19
Problem A: 兔子的繁殖問題 假設一對兔子每月能生一對小兔(一雌一雄),每對小兔出生後的下一個月是沒有繁殖能力的,至出生後的第三個月開始又可以每月生一對小兔,問從一對剛出生的小兔開始,經過若干個月後一共有多少兔子(假設在此過程中兔子沒有死亡)?
這個問題是義大利數學家菲波那契(Fibonacci)在他1202年出版的《算盤全書》中提出來的,從第一對剛出生的小兔開始每月的兔子數被稱作菲波那契序列。
Input
輸入的第一個數為n,接下來有n個數字。每個數字為一個月份m(m<=45)。
Output
輸出為n行,每行為第m個月後的兔子總數。
Sample Input
6 1 2 3 4 5 10
Sample Output
1 2 3 5 8 89
HINT
超時了吧!
使用遞迴計算菲波那契序列,這合適嗎?
用陣列寫比較方便,用迴圈直接算也不超時。
#include <stdio.h> #include <stdlib.h> #define N 45 int main() {int a[50],i,m,n,k; scanf("%d",&n); for(i=0;i<n;i++) {a[0]=1;a[1]=2; scanf("%d",&m); if(m<=2) printf("%d\n",a[m-1]); else { for(k=2;k<m;k++) a[k]=a[k-1]+a[k-2]; printf("%d\n",a[k-1]); } } }