1. 程式人生 > >兔子的繁殖問題(斐波那契數列)

兔子的繁殖問題(斐波那契數列)

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]);
    }
    }




    }