记录编号 132726 评测结果 AAAAAAAAAA
题目名称 [NOIP 2003]麦森数 最终得分 100
用户昵称 GravatarTA 是否通过 通过
代码语言 C++ 运行时间 0.043 s
提交时间 2014-10-26 15:56:17 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
int ans[502],t[502],c[503];
inline void multi(int * a){
	int i,j;
	memset(c,0,sizeof(c));
	for(i=1;i<501;++i)
		for(j=1;i+j-1<501;++j)
			c[i+j-1]+=a[i]*t[j];
	for(i=1;i<501;++i){
		c[i+1]+=c[i]/10;
		c[i]%=10;
	}
	for(i=1;i<501;++i)
		a[i]=c[i];
}
int main(){
	freopen("mason.in","r",stdin);freopen("mason.out","w",stdout);
	int p,tot=500,pp;
	scanf("%d",&p);
	pp=p;
	t[1]=2;
	ans[1]=1;
	while(p){
		if(p&1)multi(ans);
		multi(t);
		p>>=1;
	}
	--ans[1];
	printf("%d\n",(int)(pp*log(2)/log(10)+1));
	for(int i=10;i;--i){
		for(int j=50;j;--j)
			printf("%d",ans[tot--]);
		printf("\n");
	}
}