题目描述 求 (1! + 2! + 3! + ...... n!) % 998244353. n <= 1000000.
时间: 2023-11-15 19:02:45 浏览: 169
1_求1!+2!+...n!的值.c
这道题目要求我们计算从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;
}
```
阅读全文