编译失败了,无错误,C++ 11

P1255 数楼梯

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

谢谢大佬


|