70分求助

P1255 数楼梯

leave_for @ 2023-11-19 00:15:27

有没有大神帮忙看一下

代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
const long long cf=100000000000000000;
//进位值
long long* add(long long a[], long long b[])
{
    long long *c=new long long[20];
    for(int i=0;i<20;i++) c[i]=0;
    for(int i=0;i<20;i++)
    {
        c[i]+=a[i]+b[i];
        if(c[i]>cf)
        {
            c[i+1]=c[i]/cf;
            c[i]%=cf;
        }
    }
    return c;
}//用20个longlong存位
int main()
{
    long long a[20],b[20],*c;
    a[0]=2;b[0]=3;
    for(int i=1;i<20;i++)
    {
        a[i]=0;b[i]=0;
    }
    int n;
    cin>>n;
    if(n<=3)
    {
        cout<<n;
        return 0;
    }
    else
    {
        for(int i=0;i<n-3;i++)
        {
            c=add(a,b);
            copy(b,b+20,a);
            copy(c,c+20,b);
            delete[] c;
          //斐波那契数列
        }
    }
    for(int i=19;i>=0;i--)
    {
        if(b[i]>0) cout<<b[i];
    }
  //输出
    return 0;
}

谢谢!!!


by LeNotFound @ 2023-11-19 00:29:38

数组开大点试试(?


|