分析
高精度加减模板。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 101;
int n;
int a[N],temp[N];
void mul(int a[],int u)
{
int t=0,s[101];
memset(s,0,sizeof s);
for(int i=0;i<N;i++)
{
t+=u*a[i];
s[i]=t%10;
t/=10;
}
memcpy(a,s,sizeof s);
}
void add(int a[],int b[])
{
int t=0,s[N];
memset(s,0,sizeof s);
for(int i=0;i<N;i++)
{
t+=(a[i]+b[i]);
s[i]=t%10;
t/=10;
}
memcpy(a,s,sizeof s);
}
void print(int a[])
{
int k=99;
while(k && a[k]==0) k--;
for(int i=k;i>=0;i--) cout<<a[i];
}
int main()
{
a[0]=1;
cin>>n;
for(int i=2;i<=n;i++)
{
memset(temp,0,sizeof temp);
temp[100]=1;
temp[0]=1;
for(int j=2;j<=i;j++)
{
mul(temp,j);
}
add(a,temp);
}
print(a);
return 0;
}