#include<bits/stdc++.h>
using namespace std;
vector<int> mul(vector<int> &a,int b)
{
int t=0;
vector <int> c;
for(int i=0;i<a.size()||t;i++)
{
if(i<a.size()) t=b*a[i];
c.push_back(t%10);
t=t/10;
}
return c;
}
vector <int> add(vector <int> &a,vector <int>&b)
{
vector <int> c;
int t=0;
for(int i=0;i<a.size()||i<b.size();i++)
{
if(i<a.size()) t+=a[i];
if(i<b.size()) t+=b[i];
c.push_back(t%10);
t=t/10;
}
if(t) c.push_back(t);
return c;
}
vector <vector<int>> res;
vector <int> answer;
int main()
{
int n;
cin>>n;
do
{
vector <int> n1;
int k=n;
while(n%10)
{
n1.push_back(n%10);
n=n/10;
}
n=k;
while(--k)
{
n1=mul(n1,k);
}
res.push_back(n1);
}while(--n);
for(int i=0;i<res.size();i++)
{
answer=add(answer,res[i]);
}
reverse(answer.begin(),answer.end());
for(auto x:answer) cout<<x;
}
在dev-c++上能跑出对的结果, 比如输入3得到9,输入4得到33,但提交的时候是0分。