P1045 60分超时求助

P1045 [NOIP2003 普及组] 麦森数

__hjwucj__ @ 2023-08-03 14:46:13

#include<bits/stdc++.h>
using namespace std;
int n,a[501];
long long s;
int main ()
{
    cin>>n;
    a[1]=1;
    s=log10(2)*n+1;
    for (int i=1;i<=n;i++)
    {
        int jw=0;
        for (int j=1;j<=500;j++)
        {
            a[j]=a[j]*2+jw;
            jw=a[j]/10;
            a[j]%=10;
        }
    }
    a[1]--;
    int k=1;
    while (a[k]<0)
    {
        a[k+1]--;
        a[k]+=10;
        k++;
    }
    cout<<s<<endl;
    for (int i=500;i>=1;i--)
    {
        cout<<a[i];
        if (i%50==1) cout<<endl;
    }
    return 0;
}

by Mo_xue @ 2023-08-12 12:21:27

emmm……快速幂了解一下?你这样暴力肯定超时啊,数据范围大的吓人hh 1000<P<3100000

下次做题记得看好数据范围~


by LONG_MAX @ 2023-09-10 11:51:04

开O2优化 70分


|