20分求助

P1255 数楼梯

one_ZHI @ 2023-07-21 11:07:43

#include<bits/stdc++.h>
using namespace std;
long long int n,t[11111],a[10011][11111],lena,lenb;
int main(){
    cin>>n;
    a[1][1]=1;
    a[1][2]=1;
    a[1][3]=1;

    for(int i=1;i<=n;i++){
        lena=1;
        lenb=1;
        if(i<=3){
            t[1]++;
        }
        else {

            for(int j=1;j<=max(lena,lenb);j++){
                a[j][i]=a[j][i-1]+a[j][i-2];
                if(a[j][i]>=10){
                    a[j+1][i]=a[j][i]/10;
                    a[j][i]%=10;
                }
                t[j]+=a[j][i];
                if(t[j]>=10){
                    t[j+1]+=t[j]/10;
                    t[j]%=10;
                }
                if(a[j+1][i]) lena++;
                if(t[j+ 1]) lenb++;
            }
        }
    } 
    lenb=50;
    while(t[lenb]==0) lenb--;
    for(int i=lenb;i>=1;i--) cout<<t[i];
    return 0;
}

by yinbe @ 2023-10-12 21:26:05

@one_ZHI 初始化不对

    a[1][1]=1;
    a[1][2]=1;
    a[1][3]=1;

改为

    a[1][1]=1;
    a[1][2]=2;
    a[1][3]=3;

|