LiJoQiao @ 2023-08-15 18:33:54
#include<bits/stdc++.h>
using namespace std;
const int MAXLEN=500+10;
struct bigint
{
int len,a[MAXLEN];
bigint(){memset(a,0,sizeof(a));len=1;}
void print()
{
for(int i=9;i>=0;--i)
{
for(int j=50;j;--j)
{
int tlen=i*50+j;
cout<<a[tlen];
}
cout<<'\n';
}
}
}ans2,m2;
bigint fix(bigint a)
{
while(a.a[a.len+1])++a.len;
for(int i=1;i<a.len;i++)
{
if(a.a[i]<0)
{
--a.a[i+1];
a.a[i]+=10;
}
a.a[i+1]+=a.a[i]/10;
a.a[i]%=10;
}
while(a.a[a.len]>=10)
{
a.a[a.len+1]+=a.a[a.len]/10;
a.a[a.len]%=10;
++a.len;
}
return a;
}
bigint operator*(bigint a,bigint b)
{
bigint c;
int alen=min(500,a.len);
for(int i=1;i<=alen;i++)
{
int blen=min(500-i+1,b.len);
for(int j=1;j<=blen;j++)
{
c.a[i+j-1]+=a.a[i]*b.a[j];
}
}
return fix(c);
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int P;cin>>P;
int ans1=log10(2)*P+1;
cout<<ans1<<'\n';
m2.a[1]=2;
ans2.a[1]=1;
while(P)
{
if(P&1)
{
ans2=ans2*m2;
}
m2=m2*m2;
P>>=1;
}
--ans2.a[1];
ans2=fix(ans2);
ans2.print();
return 0;
}
by LiJoQiao @ 2023-08-15 18:35:36
WA on #2
in:3021377
out:
909526
11913281261611537667213798436049305566736876178255
88332272350690015415089402574152885277835931459133
40309734813994510763562374502553333760767267082261
94805056498068234364270236322187114005959098576373
86600852826717764565800819358859665607143791528714
49648414600032153277107696032667644008966901945306
68310460272117099806449192863428911515984207543022
30411839060484427823257208111447478189918377204959
69880392336860732039112145134495381589829360634296
37539718233655887458210261770225422631973024694271
by LiJoQiao @ 2023-08-15 18:39:18
已过
死因:位数