描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50),其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入正整数n,输出计算结果S。
格式
输入格式
一个正整数n。
输出格式
计算结果S。
样例
输入样例
5
输出样例
153
限制
时间限制: 1000 ms
内存限制: 65536 KB
题目其实很简单的,这个题可以拆分为两个题,一个是高精度运算求阶乘,另一个是高精度运算求和。
对于高精度运算,一般都是用数组要储存数据。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 50005;
int ans[maxn], tmp[maxn];
void multiply(int j){ //求阶乘
for (int i=1; i<=j; i++) {
int tmpa = 0;
for (int k=0; k<maxn; k++) {
tmp[k] = tmp[k]*i + tmpa;
tmpa = tmp[k] / 10;
tmp[k] = tmp[k] % 10;
}
}
}
void add(){