1 条题解

  • 1

    这道题不难,不过数据范围一般大,题意就是求 \(fib_{n-1}\),\(n<1000\)。

    经典fib,但要高精度,不然会爆longlong(我感觉这数据范围还是太小了,毕竟答案如果是mod时间复杂度也就 \(n log_2 n\))。

    #include<bits/stdc++.h>
    using namespace std;
    int a[1001],b[1001],k[1001];
    int main()
    {
        a[1000]=b[1000]=1;
        long long n,f=1;
        cin>>n;
        for(int i=1;i<n;i++)
        {
            for(int j=1;j<=1000;j++)k[j]=a[j];
            for(int j=1;j<=1000;j++)a[j]+=b[j];
            for(int j=1;j<=1000;j++)b[j]=k[j];
            for(int m=1000;m>=0;m--)
                if(a[m]>=10)
                {
                    a[m-1]+=a[m]/10;
                    a[m]%=10;
                }
        }
        for(int i=1;i<=1000;i++)
        {
            if(f==1&&a[i]!=0)f=0;
            if(f==0)cout<<a[i];
        }
        return 0;
    }//这边是陈年代码
    
  • 1

信息

ID
1233
难度
8
分类
(无)
标签
递交数
35
已通过
5
通过率
14%
上传者