hdu 1250 高精度+斐波那契

来源:互联网 发布:淘宝店铺怎么设置打折 编辑:程序博客网 时间:2024/05/20 15:58

                                               Hat's Fibonacci

                                 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)


Problem Description
A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1.
F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input, and print that Fibonacci number.
 

Input
Each line will contain an integers. Process to end of file.
 

Output
For each case, output the result in a line.
 

Sample Input
100
 

Sample Output
4203968145672990846840663646Note:No generated Fibonacci number in excess of 2005 digits will be in the test data, ie. F(20) = 66526 has 5 digits.
 

Author
戴帽子的
 

代码:

#include <iostream>using namespace std;const int m=2008;char data[8760][m+2];int main(){    int i=5,p=m,n,num;    data[1][m]=1;    data[2][m]=1;    data[3][m]=1;    data[4][m]=1;    while(data[i-1][1]<=1)    {        for(int j=m;j>=p;j--)        data[i][j]=data[i-4][j]+data[i-1][j]+data[i-2][j]+data[i-3][j];        for(int j=m;j>=p;j--)        {            int c=data[i][j]/10;            if(c>0)            {                data[i][j]=data[i][j]%10;                data[i][j-1]+=c;            }        }        if(data[i][p-1]>0) p--;        i++;    }    while(cin>>n)    {        for(int i=0;i<=m;i++)        {            if(data[n][i]!=0)            {                num=i;                break;            }        }        for(int i=num;i<=m;i++)        cout<<(int)data[n][i];        cout<<endl;    }    return 0;}


 
0 0
原创粉丝点击