【题目描述】
用高精度计算出S=1!+2!+3!+…+n!(n≤50),其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入正整数n,输出计算结果S。
【输入】
一个正整数n。
【输出】
计算结果S。
【输入样例】
5
【输出样例】
153
【源代码】
方案一:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define SIZE 1200
int mul[SIZE];//阶乘 mul[0]存放mul数组长度
int sum[SIZE];//加和 sum[0]存放sum数组长度
void fac(int n);
void add(int m);
void put(int *rst);
int main() {
int num;
cin>>num;
if(num<2) {
cout<<num;
return 0;
}
add(num);
cout<<endl;
return 0;
}
void add(int m) {
memset(sum,0,sizeof(sum));
sum[0]=1;//数组长度默认为 1
int tmp,quo;
int a[SIZE];
for(int k=1; k<=m; k++) {
quo=0;
tmp=0;//重置
fac(k);//计算i的阶乘存入fac数组中
// put(mul);
for(int i=1; i<=mul[0]; i++) {
//将fac数组和sum数组 求和
tmp=