题目描述
用高精度计算出
S=1!+2!+3!+⋯+n!S = 1! + 2! + 3! + \cdots + n!
S=1!+2!+3!+⋯+n!(
n≤50n \le 50
n≤50)。
其中“!”表示阶乘,例如:
5!=5×4×3×2×15! = 5 \times 4 \times 3 \times 2 \times 1
5!=5×4×3×2×1。
输入格式
一个正整数
nn
n。
输出格式
一个正整数
SS
S,表示计算结果。
输入输出样例
输入 #1
复制
3
输出 #1
复制
9
说明/提示
【数据范围】
对于
100%100 \%
100% 的数据,
1≤n≤501 \le n \le 50
1≤n≤50。
#include <bits/stdc++.h>
#include <iostream>
#include <string.h>
using namespace std;
int xc[100];
int xj[100];
void culmirate(int x)
{
int i=100;
int sum=0;
for(;i>=0;i--)
{
xc[i]=xc[i]*x+sum;
sum=xc[i]/10;
xc[i]%=10;
}
}
void ax()
{
for(int i=100;i>=0;i--)
{
xj[i]=xj[i]+xc[i];
xj[i-1]=xj[i-1]+xj[i]/10;
xj[i]%=10;
}
}
int main()
{
memset(xc,0,sizeof(xc));
int n;
xc[100]=1;
cin>>n;
for(int i=1;i<=n;i++)
{
culmirate(i);
ax();
}
int i=1;
for(;i<=100;i++)
{
if(xj[i]!=0)
{
break;
}
}
for(;i<=100;i++)
{
cout<<xj[i];
}
}
加油!