求1+2!+3!+...+20!的和
时间: 2023-11-24 20:51:28 浏览: 86
以下是C++语言的代码实现:
```cpp
#include <iostream>
using namespace std;
long long factorial(int n) {
long long f = 1;
for (int i = 1; i < n + 1; i++) {
f *= i;
}
return f;
}
int main() {
long long sum = 0;
for (int i = 1; i < 21; ++i) {
sum += factorial(i);
}
cout << sum << endl;
return 0;
}
```
输出结果为:2561327494111820313
相关问题
题目:求1+2!+3!+...+20!的和
这道题要求计算1到20的阶乘的和,即1+2!+3!+...+20!的结果。
我们可以使用循环来计算每个数的阶乘,并将它们累加起来,最终得到结果。
具体的计算过程如下:
1. 定义一个变量sum,用于存储阶乘的和,初始值为。
2. 使用一个循环,从1到20依次遍历每个数。
3. 在循环中,计算当前数的阶乘,并将结果累加到sum中。
4. 循环结束后,sum中存储的就是1+2!+3!+...+20!的结果。
下面是具体的代码实现:
sum =
factorial = 1
for i in range(1, 21):
factorial *= i
sum += factorial
print(sum)
运行结果为:2561327494111820313
因此,1+2!+3!+...+20!的和为2561327494111820313。
请帮我编写C + +代码题目是给定一个正整数 nn,请计算 S = 1!+2!+3!+\ldots+n!S=1!+2!+3!+…+n! 的末 66 位(不含前导 00)。x!x! 表示 xx 的阶乘,即 1*2*3*\ldots*x1∗2∗3∗…∗x。 【输入格式】 给定一个正整数 nn,请计算 S = 1!+2!+3!+\ldots+n!S=1!+2!+3!+…+n! 的末 66 位(不含前导 00)。x!x! 表示 xx 的阶乘,即 1*2*3*\ldots*x1∗2∗3∗…∗x。
#include <stdio.h>
int main()
{
int n, i, j;
long long ans = 1; // ans 存储最终结果
scanf("%d", &n);
for (i = 1; i <= n; i++) // 依次计算每个数的阶乘
{
for (j = 1; j <= i; j++) // 用乘法计算阶乘
{
ans *= j;
if (ans >= 1e20) // 防止数据溢出,每次乘积超过 1e20 时除以 10
{
ans /= 10;
}
}
while (ans % 10 == 0) // 去除末尾的 0
{
ans /= 10;
}
}
printf("%lld\n", ans % 100000000); // 取末 6 位输出
return 0;
}