为什么只输出零?

P1045 [NOIP2003 普及组] 麦森数

_Geburah @ 2024-05-07 21:28:47

#include<bits/stdc++.h>
using namespace std;
int a1[1000000]={0};
int n;
string cheng(string a,int sum)
{
    if(sum!=0)a=cheng(a,sum-1);
    int a2=a.size();
    string b;
    for(int i=1,j=a2;i<=a2;j--,i++)
    {
        b[i]=a[j];
    }
    a=b;
    for(int i=0;i<a2;i++)
    {
        a1[i+1]=a[i]-'0';
    }
    for(int i=1;i<=a2;i++)
    {
        a1[i]*=2;
    }
    for(int i=1;i<=a2;i++)
    {
        int j=i;
        while(a1[j]>10)
        {
            a1[j+1]+=a1[j]/10;
            a1[j]%=10;
        }
    }
    for(int i=0;i<=a2;i++)
    {
        if(a1[i+1]!=0)
        b[i]=a1[i+1]+'0';
    }
    int b2=b.size();
    for(int i=1,j=b2;i<=b2;j--,i++)
    {
        a[i]=b[j];
    }
    return a;
}
int main()
{
    cin>>n;
    string a=cheng("2",n);
    cout<<a.size();
    return 0;
}

by Chong_Guang @ 2024-05-07 22:12:15

我试了一下,全错了,还有3个MLE


|