比赛 2025.1.4 评测结果 AAAAAAAAAA
题目名称 麦森数 最终得分 100
用户昵称 袁书杰 运行时间 0.122 s
代码语言 C++ 内存使用 3.42 MiB
提交时间 2025-01-04 15:51:23
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int p,len,ans[1005],b[1005],c[1005];
void work1(){
	for(int i=0;i<=1000;i++){
		c[i]=0;
	}
	for(int i=1;i<=500;i++){
		for(int j=1;j<=500;j++){
			c[i+j-1]+=ans[i]*b[j];
		}
		if(c[i]>=10){
			c[i+1]+=c[i]/10;
			c[i]%=10;
		}
	}
	for(int i=0;i<=1000;i++){
		ans[i]=c[i];
	}
}
void work2(){
	for(int i=0;i<=1000;i++){
		c[i]=0;
	}
	for(int i=1;i<=500;i++){
		for(int j=1;j<=500;j++){
			c[i+j-1]+=b[i]*b[j];
		}
		if(c[i]>=10){
			c[i+1]+=c[i]/10;
			c[i]%=10;
		}
	}
	for(int i=0;i<=1000;i++){
		b[i]=c[i];
	}
}
void fast_power(){
	while(p!=0){
		if(p%2==1){
			work1();
		}
		p/=2;
		work2();
	}
	ans[1]--;
}
signed main(){
	freopen("mason.in","r",stdin);
	freopen("mason.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>p;
	int len=log10(2)*p+1;
	cout<<len<<'\n';
	ans[1]=1;
	b[1]=2;
	fast_power();
	int number=0;
	for(int i=500;i>=1;i--){
		if(i%50==0&&i!=500){
			cout<<'\n';
		}
		cout<<ans[i];
	}
	return 0;
}