求解 5答案错误 10运行错误

P1255 数楼梯

No丶one @ 2017-04-01 22:07:32

#include<iostream>
#include<cstring>
using namespace std;
int n;
string fa[5000];
string sss(string a,string b)
{
    int la,lb,lc,aa[5000]={0},bb[5000]={0};
    char c[5000];
    la=a.length();
    lb=b.length();
    for(int i=1;i<=la;++i)    aa[i]=a[la-i]-48;
    for(int i=1;i<=lb;++i)    bb[i]=b[lb-i]-48;
    if(la<lb)    lc=lb;
    else         lc=la;
    for(int i=1;i<=lc;++i)
        aa[i]+=bb[i];
    for(int i=1;i<=lc;++i)
    {
        aa[i+1]+=aa[i]/10;
        aa[i]%=10; 
    }
    while(aa[lc+1]==1)    lc++;
    for(int i=0;i<lc;++i)    c[i]=aa[lc-i]+48;
    return c;
}
int main()
{
    cin>>n;
    fa[1]='1';
    fa[2]='2';
    for(int i=3;i<=n;++i)
    {
        fa[i]=sss(fa[i-1],fa[i-2]);
    }
    cout<<fa[n];
}

by Hunterz @ 2017-04-30 09:35:37

第五:如果输入0,也要输出0,测试数据抠门

第十:看题目:(60% N<=50 ,100% N<=5000) 所以说你的数组小了一点。


|