记录编号 132745 评测结果 AAAAAAAAAA
题目名称 [NOIP 2003]麦森数 最终得分 100
用户昵称 Gravatar席一鸣 是否通过 通过
代码语言 C++ 运行时间 0.042 s
提交时间 2014-10-26 16:33:40 内存使用 0.32 MiB
显示代码纯文本
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int r[500]={0},d[500]={0},t[500];
void m(int*a,int*b)
{
	int i,k;
	memset(t,0,sizeof(t));
	for(i=0;i<500;i++)
		for(k=0;k<500;k++)
			if(i+k<500)
				t[i+k]+=a[i]*b[k];
			else
				break;
	for(i=0;i<499;i++)
	{
		t[i+1]+=t[i]/10;
		a[i]=t[i]%10;
	}
	a[499]=t[499]%10;
}
main()
{
	freopen("mason.in","r",stdin);
	freopen("mason.out","w",stdout);
	int i,n;
	r[0]=1;
	d[0]=2;
	cin>>n;
	cout<<int(n*log10(2)+1)<<endl;
	while(n)
	{
		if(n&1)
			m(r,d);
		m(d,d);
		n>>=1;
	}
	r[0]--;
	cout<<char(r[499]+48);
	for(i=499;i>0;i--)
	{
		if(!(i%50))
			cout<<endl;
		cout<<char(r[i-1]+48);
	}
}