justinjia @ 2021-01-12 18:54:44
#include"stdio.h"
#include"math.h"
#define int long long
int p,a[1000000],num,remain,r,len=1,k=499;
signed main(void){
a[0]=1;
scanf("%d",&p);
num=p/30;
remain=p%30;
r=pow(2,remain);
for(int i=0;i<num;i++){
for(int j=0;j<len;j++)
a[j]*=1073741824/*2^30*/;
for(int j=1;j<=len;j++){
a[j]+=a[j-1]/10;
a[j-1]%=10;
}
while(a[len]){
a[len+1]+=a[len]/10;
a[len++]%=10;
}
}
for(int i=0;i<len;i++)
a[i]*=r;
for(int i=1;i<=len;i++){
a[i]+=a[i-1]/10;
a[i-1]%=10;
}
while(a[len]){
a[len+1]+=a[len]/10;
a[len++]%=10;
}
a[0]--;
printf("%d\n",len);
for(int i=0;i<10;i++){
for(int j=0;j<50;j++)
printf("%lld",a[k--]);
printf("\n");
}
return 0;
}
本人不太懂快速幂这个东西因为我太蒻了,所以顺便问一下各位大佬有没有不用快速幂的方法?(打表除外)