大菲波數 hd 1715

q923714892發表於2020-04-06
Problem Description
Fibonacci數列,定義如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
計算第n項Fibonacci數值。



Input
輸入第一行為一個整數N,接下來N行為整數Pi(1<=Pi<=1000)。



Output
輸出為N行,每行為對應的f(Pi)。



Sample Input
5
1
2
3
4

5




Sample Output
1
1
2
3

5

#include<stdio.h>
#include<string.h>
#define max 1000+10
int dp[max][max];
int main()
{
    int t,n,i,j;
    int l;//記錄位數 
    int k;
    memset(dp,0,sizeof(dp));//全部初始化為0 
    dp[1][1]=dp[2][1]=1;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i=3,l=1;i<=n;i++)
        {
            k=0;//要清 0 
            for(j=1;j<=l;j++)//以位數最多的為準 一直相加 
            {
                dp[i][j]=dp[i-1][j]+dp[i-2][j]+k;
                k=dp[i][j]/10;//
                dp[i][j]%=10;//取餘數也就是最後一位 
            }
            while(k)
            {
                dp[i][++l]=k%10;
                k/=10;
            }
        }
        for(i=l;i>=1;i--)
        printf("%d",dp[n][i]); 
        printf("\n");
    }
    return 0;
}
 


相關文章