#include<bits/stdc++.h>
#define maxn 2000
using namespace std;
string f[maxn];
string add(string a,string b){
int a1[maxn],b1[maxn],c1[maxn],len=max(a.size(),b.size());
string ans;
for(int i=a.size()-1,j=1;i>=0;i--,j++) a1[j]=a[i]-'0';
for(int i=b.size()-1,j=1;i>=0;i--,j++) b1[j]=a[i]-'0';
for(int i=1;i<=len;i++){
c1[i]+=a1[i]+b1[i];
c1[i+1]=c1[i]/10;
c1[i]%=10;
}
if(c1[len+1]) len++;
for(int i=len-1,j=1;i>=1;i--,j++)
ans[j]=c1[i]+'0';
return ans;
}
string fib(int n){
if(f[n]!="-1")
return f[n];
else f[n]=add(fib(n-2),fib(n-1));
return f[n];
}
int main(){
int k;
for(int i=3;i<maxn;i++)
f[i]="-1";
f[1]="1",f[2]="2";
cin>>k;
cout<<fib(k)<<endl;
return 0;
}
第一次:CE
第二次:《色彩缤纷》
备注:请问plus是关键字或内置函数吗?(我用了这个函数名,结果会引起歧义)