P1045 [NOIP2003 普及组] 麦森数
点击查看代码
#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\)