hdu 1250 Hat's Fibonacci

来源:互联网 发布:女明星的淘宝店铺名字 编辑:程序博客网 时间:2024/04/28 08:30

Hat's Fibonacci

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7492    Accepted Submission(s): 2428


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.
 

#include <iostream>#include <cstring>using namespace std;string add(string a,string b){    string Max,Min;    if(a.size()>b.size())    {        Max=a;        Min=b;    }    else    {        Max=b;        Min=a;    }    long j=Max.size()-1;    for (long i=Min.size()-1; i>=0; i--,j--)    {        Max[j]+=Min[i]-'0';    }    for (j=Max.size()-1; j>=1; j--)    {        if(Max[j]>'9')        {            Max[j]-=10;            Max[j-1]++;        }    }    if(Max[0]>'9')    {        Max[0]-=10;        Max='1'+Max;    }    return Max;}int main(){    string s[10000];    int n;    s[1]='1';    s[2]='1';    s[3]='1';    s[4]='1';    for (int i=5; i<10000; i++)    {        s[i]=add(add(add(s[i-1], s[i-2]),s[i-3]),s[i-4]);    }    while(cin>>n)    {        cout<<s[n]<<endl;    }    return 0;}




0 0
原创粉丝点击