Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
48744 | lnx | 斐波那契数列_记忆化递归 | C++ | 运行超时 | 1000 MS | 272 KB | 776 | 2024-06-14 14:57:31 |
#include<bits/stdc++.h> using namespace std; string sum(string x,string y) { char a1[2000],b1[2000],d[2100]; int a2[2000],b2[2000],c[2100],m=0,lenc=0; int lena=x.length(); int lenb=y.length(); string s=""; for(int i=0;i<lena;i++) { a1[i]=x.at(lena-i-1); a2[i]=a1[i]-'0'; } for(int j=0;j<lenb;j++) { b1[j]=y.at(lenb-j-1); b2[j]=b1[j]-'0'; } for(int i=0;i<max(lena,lenb);i++) { c[i]=a2[i]+b2[i]+m; m=c[i]/10; c[i]%=10; lenc++; } if(m==1) c[lenc]=m; if(m==0) lenc--; for(int i=lenc;i>=0;i--) { d[i]=(char)(c[i]+48); s+=d[i]; } return s; } string fib(int n) { if(n==1 or n==2) { return "1"; } else return sum(fib(n-1),fib(n-2)); } int main() { int a; cin>>a; cout<<fib(a); }