思路:

找规律。

实现:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 const ll MOD = 998244353;
 6 const int N = 1000000;
 7 
 8 ll a[N + 5], f[N + 5];
 9 
10 ll pow(ll x, ll n)
11 {
12     ll res = 1;
13     while (n)
14     {
15         if (n & 1) res = res * x % MOD;
16         x = x * x % MOD;
17         n >>= 1;
18     }
19     return res;
20 }
21 
22 ll inv(ll x)
23 {
24     return pow(x, MOD - 2);
25 }
26 
27 int main()
28 {
29     ll n;
30     f[0] = 1;
31     for (int i = 1; i <= N; i++) f[i] = f[i - 1] * (ll)i % MOD;
32     a[N] = inv(f[N]);
33     for (int i = N - 1; i >= 0; i--) a[i] = a[i + 1] * (i + 1) % MOD;
34     while (cin >> n)
35     {
36         if (n <= 2) { cout << n << endl; continue; }
37         ll ans = (f[n] * n - f[n] * inv(2) * 3) % MOD;
38         for (int i = 3; i <= n - 1; i++) ans = (ans - f[n] * a[i] % MOD) % MOD;
39         cout << (ans + MOD) % MOD << endl;
40     }
41     return 0;
42 }

 

相关文章:

  • 2021-10-20
  • 2021-05-27
  • 2021-12-26
  • 2021-07-04
  • 2021-05-24
  • 2022-02-05
  • 2021-10-31
  • 2021-11-23
猜你喜欢
  • 2022-12-23
  • 2021-09-25
  • 2022-12-23
  • 2021-09-01
  • 2021-06-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案