#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int a[610],b[610],c[610],d,n,i,j,ldy;
int main(){
scanf("%d",&n);
int ldy=ceil( n* log10(2) );
printf("%d\n",ldy);
a[1]=2;
b[1]=1;
while(n!=0){
for(i=1;i<=510;i++)
c[i]=0;
if(n%2==1){
for(i=1;i<=500;i++)
for(j=1;j<=500;j++)
if(i+j<=510){
c[i+j-1]=c[i+j-1]+b[i]*a[j];
c[i+j]=c[i+j]+c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
for(i=1;i<=510;i++)
b[i]=c[i];
n--;
continue;
}
for(i=1;i<=500;i++)
for(j=1;j<=500;j++)
if(i+j<=510){
c[i+j-1]=c[i+j-1]+a[i]*a[j];
c[i+j]=c[i+j]+c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
for(i=1;i<=510;i++)
a[i]=c[i];
n=n/2;
}
d=500;
b[1]--;
for(i=1;i<=10;i++){
for(j=1;j<=50;j++){
printf("%d",b[d]);
d--;
}
printf("\n");
}
return 0;
}poj2706-麦森数-高精度快速幂
最新推荐文章于 2021-06-06 20:13:05 发布
本文介绍了一种用于计算大数乘法的算法,并通过C语言实现。该算法能够处理传统整型变量无法容纳的大数运算,适用于需要高精度计算的场景。
1160

被折叠的 条评论
为什么被折叠?



