代码如下:
#include<bits/stdc++.h>
using namespace std;
char listt[5002][5002]={{},{'0','1'},{'0','2'}};
int leen[5002]={1,1,1},flag=0;
void gjd(int nn){
leen[nn]=max(leen[nn-1],leen[nn-2]);
flag=0;
for(int i=1;i<=leen[nn];i++){
listt[nn][i]=(listt[nn-1][i]-'0'+listt[nn-2][i]-'0'+flag)%10+'0';
flag=(listt[nn-1][i]-'0'+listt[nn-2][i]-'0'+flag)/10;
}
if(flag) listt[nn][++leen[nn]]='1';
}
int main(){
memset(listt,0x30,sizeof(listt));
listt[1][1]='1';listt[2][1]='2';
int n;
cin>>n;
for(int i=3;i<=n;i++) gjd(i);
for(int i=leen[n];i>=1;i--) cout<<listt[n][i];
return 0;
}
这道题的代码在Dev上能够运行并且正确,但是在洛谷上编译不过去,在线求助大佬!
谢谢!!