Libingyue2011 @ 2023-01-12 12:55:14
#include<bits/stdc++.h>
#define bl biglong
using namespace std;
struct biglong{
int len,p[1000];
int &operator [] (int i){
return p[i];
}
};
bl operator + (bl x,bl y){
bl a={1,{0}};
a.len=max(x.len,y.len);
for(int i=1;i<=a.len;i++){
a[i]+=x[i]+y[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
if(a[a.len+1]!=0) a.len++;
return a;
}
void input(bl &x){//还原Python输入
string s;
cin>>s;
x.len=s.size();
for(unsigned int i=0;i<s.size();i++){
x[s.size()-i]=s[i]-'0';
}
return;
}
void print(string s,bl x,string c){//还原Python输出
cout<<s;
for(int i=x.len;i>=1;i--){
cout<<x[i];
}
cout<<c;
}
int n;
bl a[5010]={bl{1,{0,1}},bl{1,{0,1}}};
int main() {
cin>>n;
for(int i=2;i<=n;i++){
a[i]=a[i-1]+a[i-2];
}
print("",a[n],"");
return 0;
}
by Ruiqun2009 @ 2023-01-12 13:10:39
@Libingyue2011 这里:
bl a[5010]={bl{1,{0,1}},bl{1,{0,1}}};
改成:
bl a[5010];
然后在 main()
函数里输入之前加上:
bl[0].len=1;
bl[1].len=1;
bl[0].p[0]=0;
bl[0].p[1]=1;
bl[1].p[0]=0;
bl[1].p[1]=1;
另外,算法有误。
by Libingyue2011 @ 2023-01-12 13:51:30
谢谢大佬