输入不超过1000的正整数n,输出n!=1*2*3*4..和的精确结果。 提示:可以用一维数组来做。用c++
时间: 2023-06-14 09:07:46 浏览: 134
求解不等式C语言小程序代码.txt
以下是用C++实现的代码:
```cpp
#include <iostream>
using namespace std;
const int MAXN = 1000;
int ans[MAXN + 1]; // 用一维数组存储n的阶乘
int digits = 1; // 当前计算的阶乘的位数
int main() {
int n;
cin >> n;
ans[0] = ans[1] = 1; // 0!和1!都等于1
// 计算n的阶乘
for (int i = 2; i <= n; i++) {
int carry = 0; // 进位
for (int j = 1; j <= digits; j++) {
int tmp = ans[j] * i + carry;
ans[j] = tmp % 10;
carry = tmp / 10;
}
while (carry > 0) { // 处理最高位的进位
digits++;
ans[digits] = carry % 10;
carry /= 10;
}
}
// 计算阶乘的和
int sum = 0;
for (int i = 1; i <= digits; i++) {
sum += ans[i];
}
cout << sum << endl;
return 0;
}
```
这个程序先用一维数组存储n的阶乘,然后再计算阶乘的和。计算阶乘的过程中,采用了类似手工乘法的方式,用一个进位来处理每一位的计算。最后,将阶乘的每一位相加,得到阶乘的和。
阅读全文