4 条题解

  • -2
    @ 2023-8-1 16:10:11

    我太喜欢C++啦

    😕 😕 😕

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int a[10000];
    int b[10000];
    int c[10000];
    int d[10000];
    
    int main()
    {
    
        int n;
        cin >>n;
        a[1]=1;
        b[1]=1;
        if(n==1){cout<<"1";}
        if(n==2){cout<<"2";}
        int la=1;
        int lb=1;
        int lc=1;
        int ld=1;
        if(n!=1 && n!=2){
            for(int i=1; i<=n; i++){
                if(i==2){
                    d[1]=2;
                }
                if(i>2){
                    for(int j=1000; j>=1; j--){
                        if(d[j]!=0){
                            ld=j;
                            break;
                        }
                    }
                    if(i%3==0){
                        for(int j=lc; j>=1; j--){
                            c[j]=0;
                        }
                        lc=max(la,lb)+1;
                        for(int j=1; j<=max(la,lb); j++){
                            c[j]=a[j]+b[j]+c[j];
                            c[j+1]=c[j+1]+c[j]/10;
                            c[j]=c[j]%10;
                        }
                        if(c[lc]==0){lc--;}
                        for(int j=1; j<=max(ld,lc); j++){
                            d[j]=d[j]+c[j];
                            d[j+1]=d[j+1]+d[j]/10;
                            d[j]=d[j]%10;
                        }
                    }
                    if(i%3==1){
                        for(int j=la; j>=1; j--){
                            a[j]=0;
                        }
                        la=max(lc,lb)+1;
                        for(int j=1; j<=max(lc,lb); j++){
                            a[j]=a[j]+b[j]+c[j];
                            a[j+1]=a[j+1]+a[j]/10;
                            a[j]=a[j]%10;
                        }
                        if(a[la]==0){la--;}
                        for(int j=1; j<=max(ld,la); j++){
                            d[j]=d[j]+a[j];
                            d[j+1]=d[j+1]+d[j]/10;
                            d[j]=d[j]%10;
                        }
                    }
                    if(i%3==2){
                        for(int j=lb; j>=1; j--){
                            b[j]=0;
                        }
                        lb=max(lc,la)+1;
                        for(int j=1; j<=max(lc,la); j++){
                            b[j]=a[j]+b[j]+c[j];
                            b[j+1]=b[j+1]+b[j]/10;
                            b[j]=b[j]%10;
                        }
                        if(b[lb]==0){lb--;}
                        for(int j=1; j<=max(ld,lb); j++){
                            d[j]=d[j]+b[j];
                            d[j+1]=d[j+1]+d[j]/10;
                            d[j]=d[j]%10;
                        }
                    }
                }
            }
            if(d[ld+1]!=0){ld++;}
            for(int j=ld; j>=1; j--){
                cout<<d[j];
            }
        }
    
    	return 0;
    }
    

    信息

    ID
    837
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    54
    已通过
    25
    上传者