不知道哪里错了,并且好像错得还挺多...
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
vector<int> a;
int b[1000050];
int main(){
int n;cin>>n;
a.push_back(1);
int cnt;
for(int i=1;i<=n;i++){
cnt=a.size()+3;
for(int j=0;j<cnt;j++){
a[j]*=i;
if(a[j]>=100){
a[j+2]+=a[j]/100;
a[j+1]+=a[j]/10;
a[j]%=10;
}
else if(a[j]>=10){
a[j+1]+=a[j]/10;
a[j]%=10;
}
}
cnt++;
for(int j=0;j<cnt;j++){
b[j]+=a[j];
b[j+1]+=b[j]/10;
b[j]%=10;
}
}
cnt++;
while(b[cnt]==0) cnt--;
for(int i=0;i<cnt;i++)
cout<<b[i];
return 0;
}