题目描述 求 (1! + 2! + 3! + ...... n!) % 998244353. n <= 1000000.运用c语言解决
时间: 2023-11-15 19:02:46 浏览: 509
这道题目要求计算1到n的阶乘的和,并对998244353取模。可以使用循环来计算每个数的阶乘,并将其加入到总和中。需要注意的是,由于n的范围很大,需要使用long long类型来存储阶乘和总和,并在计算阶乘时进行取模操作,以避免溢出。以下是一个C语言的实现代码:
```
#include <stdio.h>
#define MOD 998244353
int main() {
int n;
long long sum = 0, fact = 1;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
fact = (fact * i) % MOD; sum = (sum + fact) % MOD;
}
printf("%lld\n", sum);
return 0;
}
```
相关问题
题目描述 求 (1! + 2! + 3! + ...... n!) % 998244353. n <= 1000000.
这道题目要求我们计算从1到n的阶乘之和,并对998244353取模。我们可以使用循环来计算每个数的阶乘,并将它们相加。由于n的范围很大,我们需要使用long long类型来存储阶乘和结果。同时,我们需要使用快速幂算法来对结果取模,以避免溢出。
以下是代码实现:
```
#include <iostream>
using namespace std;
const int MOD = 998244353;
long long pow_mod(long long a, long long b) {
long long res = 1;
while (b) {
if (b & 1) res = res * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return res;
}
int main() {
int n;
cin >> n;
long long ans = 0, fac = 1;
for (int i = 1; i <= n; i++) {
fac = fac * i % MOD;
ans = (ans + fac) % MOD;
}
ans = ans * pow_mod(2, MOD - 2) % MOD;
cout << ans << endl;
return 0;
}
```
(1!+2!+...+n!)%998244353
题目描述:求1!+2!+...+n!对998244353取模的结果。
解题思路:可以使用循环累加的方法,每次计算阶乘并加到结果中,最后对998244353取模即可。
代码实现:
n = int(input())
res = 0
factorial = 1
for i in range(1, n+1):
factorial = factorial * i % 998244353
res = (res + factorial) % 998244353
print(res)
阅读全文