aa9527 @ 2022-07-09 20:00:15
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
long long P;
cin>>P;
int length=8;
int m[502]={0};
m[1]=1;
int n=1048576; //2的20次方
int k=n;
for(int i=1;n!=0;i++)
{
m[i]=n%10;
n=n/10;
}
for(int i=1;i<=P/20-1;i++) //先算20的整数倍次方,比如2的1279次方就先算前1260次方,剩下的19次方等下算
{
for(int j=1;j<=(i+1)*20*log10(2)+1 && j<=501;j++)
{
m[j]=m[j]*k;
if(m[j-1]>=10)
{
m[j]+=m[j-1]/10;
m[j-1]=m[j-1]%10;
}
}
}
for(int i=1;i<=P%20;i++) //上面得到的结果在这里算剩下的19次方
{
for(int j=1;j<=(P/20*20+i)*log10(2)+1 && j<=501;j++)
{
m[j]=m[j]*2;
if(m[j-1]>=10)
{
m[j]+=m[j-1]/10;
m[j-1]=m[j-1]%10;
}
}
}
length=P*log10(2)+1;
cout<<length<<endl;
m[1]=m[1]-1;
for(int i=500;i>=1;i--)
{
cout<<m[i];
if((i-1)%50==0)
cout<<endl;
}
}
by F_oR_es_T @ 2022-10-29 12:37:34
@aa9527
你开一下O2就行了我看了半天也没发现错误,就试了一下另外再加个return 0;加不加都行好像