[NOIP1998 普及组] 阶乘之和
题目描述
用高精度计算出 $S = 1! + 2! + 3! + ... + 50!。
#输入格式
一个正整数 n。
## 输出格式
一个正整数,表示计算结果。
1 < n <= 50
**【其他说明】**
注,《深入浅出基础篇》中使用本题,使用书中的代码无法通过本题。
如果希望通过本题,请继续学习第八章高精度的知识。
NOIP1998 普及组 第二题
#include<stdio.h>
int main()
{
int i, A[1005] = {0}, B[1005] = {0}, n, j;
scanf("%d", &n);
A[0] = B[0] = 1;
for (i=2; i <= n; i++){
for (j = 0; j < 100; j++)
B[j] *= i;
for (j = 0; j < 100; j++)
if (B[j] > 9){
B[j + 1] += B[j]/10;
B[ j ] %= 10;
}
for (j = 0; j < 100; j++){
A[j] += B[j];
if (A[j] > 9) {
A[j + 1] += A[j]/10;
A[j] %= 10;
}
}
}
for (i = 100; i >= 0 && A[i] == 0; i--);
for (j = i; j>=0; j--) printf("%d", A[j]);
return 0;
}