提交时间:2026-04-03 14:47:13
运行 ID: 86441
#include<iostream> #include<cmath> #include<vector> #include<cstring> using namespace std; void multiply(int a[],int b[]){ int temp[501]={0}; for(int i=0;i<500;i++){ for(int j=0;j+i<500;j++){ temp[i+j]+=a[i]*b[j]; } }for(int i=0;i<500;i++){ if(temp[i]>=10){ if(i<499)temp[i+1]+=temp[i]/10; temp[i]%=10; } }memcpy(a,temp,sizeof(temp)); }int main(){ int p; cin>>p; int digits=(int)(p*log10(2))+1; cout<<digits<<endl; int res[501]={0}; int base[501]={0}; res[0]=1; base[0]=2; while(p>0){ if(p%2==1){ multiply(res,base); }multiply(base,base); p/=2; }res[0]-=1; for(int i=499;i>=0;i--){ cout<<res[i]; if(i%50==0)cout<<endl; }return 0; }