50分求助

P1045 [NOIP2003 普及组] 麦森数

澄心如意 @ 2022-01-25 20:49:57


#include<bits/stdc++.h>
using namespace std;
int a[1500000]={};
int main(){
    int p,i,j,l,t;
    cin >> p;
    l=1;
    a[1]=1;
    for (i=1;i<=p;i++){
        t=0;
        l++;
        for (j=1;j<=l;j++){
            t=t+a[j]*2;
            a[j]=t%10;
            t=t/10;
        }
        if (a[l]==0)
            l--;
    }
    a[1]=a[1]-1;
    i=1;
    while (a[i]<0){
        a[i]=a[i]+10;
        i=i+1;
        a[i]--;
    }
    if (a[l]==0) l--;
    cout << l << endl;
    for (i=500;i>=1;i--){
        cout << a[i];
        if (i%50==1)
            cout << endl;
    }
    return 0;
} 

|