高精度数乘以低精度数,代模板即可。
代码:
#include<iostream>
#include<cstring>
using namespace std;
const int MAX=1e5+10;
int a[MAX],cnt;
//a=a*b
void multi(int b){
int add=0,t;
for(int i=1;i<MAX;++i){
t=a[i]*b+add;
a[i]=t%10;
add=t/10;
}
}
int main(){
int n;
while(~scanf("%d",&n)){
if(n<=1){
printf("%d\n",1);
continue;
}
memset(a,0,sizeof(a));
a[1]=1,cnt=1;
for(int i=1;i<=n;++i) multi(i);
cnt=MAX-1;
while(!a[cnt]) --cnt;
for(int i=cnt;i>=1;--i) printf("%d",a[i]);
printf("\n");
}
return 0;
}