2020许弘毅 @ 2024-03-24 21:08:05
#include<cmath>
#include<cstdio>
int p,w;
long long a[510],b[510];
void cheng(long long *a,long long *b)//高精乘
{
long long c[10010]={0},len=a[0]+b[0];
if(len>500)
len=500;
for(int i=1;i<=a[0];i++)
{
for(int j=1;j<=b[0];j++)
{
int t=i+j-1;
c[t]+=a[i]*b[j];
c[t+1]+=c[t]/10;
c[t]%=10;
}
}
while(!c[len])
len--;
for(int i=1;i<=len;i++)
a[i]=c[i];
a[0]=len;
}
int main()
{
scanf("%d",&p);
w=ceil(p*log10(2));
printf("%d\n",w);
a[0]=b[0]=1;
a[1]=1,b[1]=2;
while(p)//快速幂
{
if(p%2)
cheng(a,b);
p>>=1;
cheng(b,b);
}
int d=500;
a[1]--;
for(int i=1;i<=10;i++)
{
for(int j=1;j<=50;j++)
printf("%d",a[d--]);
printf("\n");
}
return 0;
}
#include<cmath>
#include<cstdio>
int p,w;
long long a[510],b[510];
void cheng(long long *a,long long *b)//高精乘
{
long long c[10010]={0};
for(int i=1;i<=500;i++)
{
for(int j=1;j<=500;j++)
{
int t=i+j-1;
c[t]+=a[i]*b[j];
c[t+1]+=c[t]/10;
c[t]%=10;
}
}
for(int i=1;i<=500;i++)
a[i]=c[i];
}
int main()
{
scanf("%d",&p);
w=ceil(p*log10(2));
printf("%d\n",w);
a[0]=b[0]=1;
a[1]=1,b[1]=2;
while(p)//快速幂
{
if(p%2)
cheng(a,b);
p>>=1;
cheng(b,b);
}
int d=500;
a[1]--;
for(int i=1;i<=10;i++)
{
for(int j=1;j<=50;j++)
printf("%d",a[d--]);
printf("\n");
}
return 0;
}