蛇皮 @ 2020-02-15 17:24:21
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a[1000]={2},ans[1000]={1};
void mul1()
{
int x[1000];
memset(x,0,sizeof(x));
for(int i=0;i<=500;i++)
{
for(int j=0;j<=500;j++)
{
x[i+j]+=ans[i]*a[j];
}
for(int j=0;j<=500;j++)
{
if(x[j]>=10)
{
x[j+1]+=x[j]/10;
x[j]%=10;
}
}
}
for(int i=0;i<500;i++)
{
ans[i]=x[i];
}
}
void mul2()
{
int x[1000];
memset(x,0,sizeof(x));
for(int i=0;i<=500;i++)
{
for(int j=0;j<=500;j++)
{
x[i+j]+=a[i]*a[j];
}
for(int j=0;j<=500;j++)
{
if(x[j]>=10)
{
x[j+1]+=x[j]/10;
x[j]%=10;
}
}
}
for(int i=0;i<500;i++)
{
a[i]=x[i];
}
}
int main()
{
int p;
cin>>p;
int weishu=p*log10(2)+1;
cout<<weishu<<endl;
while(p)
{
if(p&1) mul1();
mul2();
p>>=1;
}
for(int i=500-1;i>=0;i--)
{
cout<<ans[i];
if(((i)%50)==0)
cout<<endl;
}
}
by wyx__ @ 2020-02-15 17:26:01
@蛇皮 所以减一就好了呀
by CrTsIr400 @ 2020-02-15 17:30:15
@蛇皮 减一
by 蛇皮 @ 2020-02-15 17:45:56
所以为什么呢?
by 蛇皮 @ 2020-02-15 17:46:06
百思不得其解
by 蛇皮 @ 2020-02-15 17:46:29
@2020严誉沣 @wyx__
by critnos @ 2020-02-15 17:48:16
@蛇皮
十进制高精度数
2^{P} -1的最后500位数字。
by 蛇皮 @ 2020-02-15 17:54:39
@26535 做着做着就忘记了。(哭笑不得)
by 蛇皮 @ 2020-02-15 17:54:46
谢谢各位
by ducati @ 2020-07-13 20:32:41
考古
by ducati @ 2020-07-13 20:32:53
我也因此WA了2次QWQ 我傻逼