请求帮忙

P1045 [NOIP2003 普及组] 麦森数

gyttnnd @ 2022-11-15 19:42:20


#include<bits/stdc++.h>
using namespace std;
int a[10000];
int b[10000];
int c[10000];
int main()
{
    int p,k;
    cin>>p;
    printf("%d\n",(int)(log10(2)*p+1));
    a[1]=2;
    b[1]=2;
    for(k=1;k<=p;k=k*2)
    {
        for(int i=1;i<=10000;i++)
        {    
           int x=0;
           for(int j=1;j<=10000;j++)
           {
              c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
              x=c[j+i-1]/10;
              c[j+i-1]%=10;
           }
        }
        for(int i=1;i<=10000;i++)
        {
           a[i]=c[i];
           b[i]=c[i];
        }
    }
    for(int i=1;i<=p-k;i++)
    {
        int x=0;
        for(int j=1;j<=503;j++)
        {
            a[j]=a[j]*2+x;
            x=a[j]/10;
            a[j]=a[j]%10;
        }
    }
    a[1]=a[1]-1;
    for(int i=500;i>=1;i--)
    cout<<a[i];
    return 0;
}

|