hdoj acm 1715

#include
#include
using namespace std;
string add(string a,string b)
{
    string A="0";
    A+=a;      //必须的
    if(a.length()         a.swap(b);
    for ( int i=1;i<=a.length();i++)
        if(i<=b.length())
            A[A.length()-i]+=b[b.length()-i]-'0';
    for( int i=0;i     {
        if(A[A.length()-i]>'9')
        {
            A[A.length()-i]-=10;
            A[A.length()-i-1]+=1;
        }
    }
    while(A[0]=='0')
        A.erase(0,1);
    return A;
}
string s[1001]={ "0", "1", "1" };
void app ()
{
     for(int i=3;i!=1001;++i)
     {
        s[i]=add(s[i-1],s[i-2]) ;
     }
}
int main ()
{
    int T;
    app ();
    cin>>T;
    while ( T -- )
    {
        int N;
        cin >> N;
        cout << s[N] << endl;
    }
    return 0;
}

你可能感兴趣的:(ACM水题)