他是把所有的位数,包括之后的零一起算了进去,避免了最后进位的麻烦,值得学习。
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int a[10000];
int main(){
int n;
cin>>n;
memset(a,0,sizeof(a));
if(n==1){
cout<<1<<endl;
return 0;
}
a[0]=1;
int c=0,temp=0;
for(int i=2;i<=n;i++){
for(int j=0;j<10000;j++){
temp=a[j]*i+c;
c=temp/10;
a[j]=temp%10;
}
}
int flag=0;
for(int i=9999;i>=0;i--){
if(a[i]!=0){
flag=i;
break;
}
}
for(int j=flag;j>=0;j--){
cout<<a[j];
}
return 0;
}