P1045 [NOIP2003 普及组] 麦森数

P1045

点击查看代码
#include<bits/stdc++.h>
using namespace std;
unsigned long long a[501]={1};
int main(){
	int p;
	cin>>p;
	cout<<int(p*(log10(2))+1)<<endl;
	
	for(;p>0;p-=60){//p2^60一算 
		unsigned long long x=0;
		for(int j=0;j<500;j++){
			if(p>60) a[j]<<=60;//*2^60 
			else a[j]<<=p;
			a[j]+=x;//进位 
			x=a[j]/10;
			a[j]%=10;
		}
	}
	a[0]-=1;
	
	for(int i=499;i>=0;i--){
		cout<<a[i];
		if(i%50==0) cout<<endl;
	}
	return 0;
}

\(log_n{a^{p}}=p*log_n{a}\)

\(3100000*500/60=10^{8}\)
\(9*2^{60}\)
ull:\(2^{64}-1\)

posted @ 2022-04-04 22:20  Amy-xue  阅读(46)  评论(0编辑  收藏  举报