麦森数
查看原帖
麦森数
443023
chenkuo楼主2023/6/30 19:06

求助,样例也过不了。

┭┮﹏┭┮

#include<bits/stdc++.h>
#define longint long long
using namespace std;
int n;
longint a[1000],b[1000],s;
void change(longint a[],longint b[]){for(int i=0;i<=b[0];i++) a[i]=b[i];return;}
void multiplication(longint a[],longint b[]){
	longint c[502]={0},d[502]={0};
	for(int i=1;i<=b[0];i++){
		for(int j=1;j<=a[0];j++) c[j]=b[i]*a[j];
		for(int j=1;j<=a[0];j++) d[j+i-1]+=c[j];
	}
	int l=1;
	while(l<=500&&(l<=a[0]+b[0]+1||d[l]!=0)){
		d[l+1]+=d[l]/10;
		d[l]%=10;
		l++;
	}
	d[0]=l-3;
	change(a,d);
	return;
}
int main(){
	int u;
	scanf("%d",&n);
	printf("%d",(int)(log10(2)*n+1));
	a[0]=a[1]=1;
	b[0]=1;b[1]=2;
	while(n>0){
		if(n&1)	multiplication(a,b);
		multiplication(b,b);
		n/=2;
	}
	for(int i=500;i>1;i--){
		if(i%50==0){
			cout<<endl;
		}
		printf("%lld",a[i]);
	}
	printf("%lld",a[1]-1);
}
2023/6/30 19:06
加载中...