help样例能过,0分求助

P1045 [NOIP2003 普及组] 麦森数

徐殿崴2011 @ 2022-08-18 22:48:55

#include <bits/stdc++.h>
using namespace std;
int p,rev[1100],f[1100],sav[1100];
void cheng1()
{
    memset(sav,0,sizeof(sav));
    for(int i = 1;i <= 500;i++)
    {
        for(int j= 1;j <= 500;j++)
        {
            sav[i+j-1]+=rev[i]*f[j];
            sav[i+j]+=sav[i+j-1]/10;
            sav[i+j-1]%=10;
        }
    }
    memcpy(rev,sav,sizeof(rev));
} 

void cheng2()
{
    memset(sav,0,sizeof(sav));
    for(int i = 1;i <= 500;i++)
    {
        for(int j= 1;j <= 500;j++)
        {
            sav[i+j-11]+=f[i]*f[j];
            sav[i+j]+=sav[i+j-1]/10;
            sav[i+j-1]%=10;
        }
    }
    memcpy(f,sav,sizeof(f));
}
int main() {
    cin>>p;
    cout<<(int)(p*log10(2)+1);
    rev[1]=1;
    f[1] = 2;
    while(p!=0)
    {
        if(p%2==1)
        {
            cheng1();
        }
        p/=2;
        cheng2();
    }
    rev[1]--;
    for(int i = 500;i >= 1;i--)
    {
        if(i%50==0) cout<<endl;
        cout<<rev[i];
    }

    return 0;
}

大佬们看看有什么问题


by xlzy7777 @ 2023-01-04 23:09:08

你第一个需要换行吗?你if那里应该是i%50==0&&i!=500


|