记录编号 32457 评测结果 AAAAAAAAAA
题目名称 [NOIP 2003]麦森数 最终得分 100
用户昵称 GravatarOo湼鞶oO 是否通过 通过
代码语言 C++ 运行时间 0.126 s
提交时间 2011-11-06 21:36:24 内存使用 0.28 MiB
显示代码纯文本
#include<iostream>
#include<iomanip>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
	int n,y,p;
	int ans[1000],a[1000];
	int make[1000];
void mul(int x[],int y[],int c[]); 	
void mul(int x[],int y[],int c[])
{
	for (int i=1;i<=500;i++)
	{
		make[i]=0;
	}
	for (int i=1;i<=500;i++)
	{
		for (int j=1;j+i-1<=500;j++)
		{
			make[i+j-1]+=x[i]*y[j];
		}
	}
	for (int i=1;i<=500;i++)
	{
		if (make[i]>=10)
		{
			make[i+1]+=make[i]/10;
			make[i]%=10;
		}
		c[i]=make[i];
	}
}
int main()
{
	freopen("mason.in","r",stdin);
	freopen("mason.out","w",stdout);
	scanf("%d",&n);
	y=int(n*log10(double(2)))+1;
	ans[1]=1;
	a[1]=2;
	while (n>0)
	{
		if (n%2==1) 
		{
			mul(a,ans,ans);
		}
		n/=2;
		mul(a,a,a);
	}
	printf("%d\n",y);
	if (ans[1]==0)
	{
		ans[1]=9;
		ans[2]--;
	}
	else
	{
		ans[1]--;
	}
	for (int i=500;i>=1;i--)
	{
		printf("%d",ans[i]);
		p++;
		if (p%50==0)
		{
			printf("\n");
		}
	}
	return 0;
}