核心
高精度是用数组来存储数值,低位在前,高位在后,所以输出要逆序输出。
1.用于阶乘
//c表示传过来的数,在主函数中可以用for循环
//注意 初始化 s[1]=1
void jc(int c){
for(int i=1;i<=len;i++)
s[i]=s[i]*c;
for(int i=1;i<=len;i++){
if(s[i]>=10){
long long add=s[i]/10;
s[i+1]+=add;
s[i]%=10;
if(i+1>len)
len=i+1;
}
}
}
//计算1....n的阶乘
a[1]=1;
for(i=2;i<=n;i++){
jw=0;
for(j=1;j<=p;j++){
a[j]=a[j]*i+jw;
jw=a[j]/10;
a[j]%=10;
}
while(jw>0){
a[j]=jw%10;
jw/=10;
j++;
}
p=j-1;
}
2.计算两数之和
for(int i=A.length()-1,j=1;i>=0;i--,j++)
a[j]=A[i]-'0';
for(int i=B.length()-1,j=1;i>=0;i--,j++)
b[j]=B[i]-'0';
int len=max(A.length(),B.length());
for(int i=1;i<=len;i++){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;
}
if(c[len+1])
len++;