用高精度求10000以内n的阶乘
#include<iostream>
using namespace std;
int a[40010],c[40010],n,x1,x2,lena=1,lenc=0;
int main(){
cin>>n;
a[1]=1;
for(int i=1;i<=n;i++){
x1=0;
for(int j=1;j<=lena;j++){
a[j]=a[j]*i+x1;
x1=a[j]/10;
a[j]=a[j]%10;
if(x1>0&&j>=lena){
lena++;
}
}
x2=0;
lenc=max(lena,lenc);
for(int j=1;j<=lenc;j++){
c[j]=c[j]+a[j]+x2;
x2=c[j]/10;
c[j]=c[j]%10;
if(x2>0&&j>=lenc){
lenc++;
}
}
}
for(int i=lenc;i>=1;i--){
cout<<c[i];
}
return 0;
}