#include<stdio.h>
#include<math.h>
int main()
{
int p;
while(scanf("%d",&p)!=EOF)
{
float a;
int all;
int tag=0;
int tag2=0;int pl;
a=log10 (2);
//printf("%f\n",a*p);
all=a*p;
all++;
printf("%d\n",all);
p++;
char t[502];//2^p最后500位
int j,k;
for(k=0;k<=500;k++) t[k]=0;
t[1]=1;
int now=1;
if(all>=500) all=500;
for(k=1;k<p;k++)
{
for(j=now;j>=1;j--)
{
if(t[j]*2<10) t[j]=t[j]*2;
else
{
t[j]=2*t[j]-10;
else if (now>=500) now=500; t[j+1]++;
if(j==now&&now<500) now++;
}
}
}
int o;
if(t[500]==0) o=1;
for(k=500;k>=2;k--)
{
if(o==1&&t[k]==0) printf("0");
else o=0,printf("%d",t[k]);
}
printf("%d",t[1]-1);
printf("\n");
}
}
RQNOJ54,麦森数
http://www.rqnoj.cn/Problem_54.html
请高人指教