p.s.个人收录用
题目描述
已知正整数N(N<=100),设S=1!+2!+3!+...N!。其中"!"表示阶乘,即N!=1*2*3*……*(N-1)*N,如:3!=1*2*3=6。请编程实现:输入正整数N,输出计算结果S的值。
输入
输入一个整数n( 1<= n<=100)
输出
输出s的值
样例输入 Copy
4
样例输出 Copy
33
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <string.h>
//阶乘和(sum)
int main()
{
int n;
scanf("%d", &n);
int a[2050], b[2050];
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
a[0] = 1;
//n的阶乘
for (int i = 1; i <= n; i++)
{
int c = 0;
int s;
for (int j = 0; j < 2050; j++)
{
s = a[j] * i + c;
a[j] = s % 10;
c = s / 10;
}
c = 0;
for (int j = 0; j < 2050; j++)
{
b[j] += a[j] + c;
c = b[j] / 10;
b[j] %= 10;
}
}
int i;
for (i = 2049; i >= 0; i--)
{
if (b[i])
break;
}
for (int j = i; j >= 0; j--)
printf("%d", b[j]);
printf("\n");
}