记录编号 179876 评测结果 AAAAAAAAAA
题目名称 [NOIP 2003]麦森数 最终得分 100
用户昵称 Gravatar我是害虫啦啦啦 是否通过 通过
代码语言 C++ 运行时间 0.485 s
提交时间 2015-08-17 14:55:55 内存使用 0.23 MiB
显示代码纯文本
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	freopen("mason.in","r",stdin);
	freopen("mason.out","w",stdout);
	int p,i,j,n,m,q;
	char b[501]={0},a[501]={0},z[501]={0};
	a[0]=2;
	scanf("%d",&p);
	n=int(p*log(2.0)/log(10.0)+1);
	printf("%d",n);
    b[1]=2;
    a[1]=1;
    while(p!=0)	
	{
		if(p%2)
		{
			memset(z,0,501);
			for(i=1;i<=500;i++)	
			{
				q=0;
		        for(j=1;j<=500;j++)	
				{
					if(i+j-1>500)
					break;
			        z[i+j-1]+=a[i]*b[j]+q;
			        q=z[i+j-1]/10;
			        z[i+j-1]%=10;
		        }
	        }
			memcpy(a,z,501);
		}
		memset(z,0,501);
		for(i=1;i<=500;i++)	
		{
			n=0;
		    for(j=1;j<=500;j++)	
			{
				if(i+j-1>500)
				break;
			    z[i+j-1]+=b[i]*b[j]+n;
			    n=z[i+j-1]/10;
			    z[i+j-1]%=10;
		    }
	    }
		memcpy(b,z,501);
		p/=2;
	}
	a[1]--;
	for(i=500;i>0;i--)
	{
		if(i%50==0)
		printf("\n");
		printf("%d",a[i]);		
	}
	return 0;			
}