按题解思路来的,为什么戳

P1255 数楼梯

lucy2012 @ 2024-04-05 22:16:15

#include<bits/stdc++.h>
using namespace std;
int n,len=1,a[6000][6000];
void f(int n){
    for(int i=1;i<=len;i++)
        a[n][i]=a[n-1][i]+a[n-2][i];
    for(int i=1;i<=len;i++){
        if(a[n][i]>=10){
            a[n][i+1]=a[n][i]/10;
            a[n][i]%=10;
            if(!a[n][len+1])
                len++;
        }
    }
}
int main(){
    cin>>n;
    a[1][1]=1;
    a[2][1]=2;
    for(int i=3;i<=n;i++)
        f(i);
    for(int i=len;i>=1;i--)
        cout<<a[n][i];
    return 0;
}

by 枫原千叶 @ 2024-04-05 22:19:31

斐波那契让你eat了吗


by 枫原千叶 @ 2024-04-05 22:20:13

为什么要用这么奇怪的方式写斐波那契?


by 枫原千叶 @ 2024-04-05 22:21:20

高精度不好吗qwq


by rhn7 @ 2024-04-05 22:31:27

a[n][i+1]=a[n][i]/10;改成a[n][i+1]+=a[n][i]/10;


by Dream_Creator @ 2024-04-05 22:32:21

@lucy2012


#include<bits/stdc++.h>
using namespace std;
int n,len=1,a[6000][6000];
void f(int n){
    for(int i=1;i<=len;i++)
        a[n][i]=a[n-1][i]+a[n-2][i];
    for(int i=1;i<=len;i++){
        if(a[n][i]>=10){
            a[n][i+1]+=a[n][i]/10;
            a[n][i]%=10;
            if(a[n][len+1])
                len++;
        }
    }
}
int main(){
    cin>>n;
    a[1][1]=1;
    a[2][1]=2;
    for(int i=3;i<=n;i++)
        f(i);
    for(int i=len;i>=1;i--)
        cout<<a[n][i];
    return 0;
}

by lucy2012 @ 2024-04-06 08:50:35

@rhn7 @Dream_Creator 额,谢谢啦


|