fork download
  1. /*
  2.   ********
  3.   ******* *******
  4.   ****** ******
  5.   **** ****
  6.   **
  7. */
  8.  
  9. #include<bits/stdc++.h>
  10. using namespace std;
  11.  
  12. typedef long long ll;
  13. #define el '\n'
  14.  
  15. const ll MOD = 998244353;
  16. const ll N = 200005;
  17.  
  18. ll n;
  19. ll f[N] , inv[N];
  20.  
  21. ll power(ll b , ll e)
  22. {
  23. ll res = 1;
  24. b %= MOD;
  25. while(e > 0)
  26. {
  27. if(e % 2 == 1) res = (res * b) % MOD;
  28. b = (b * b) % MOD;
  29. e /= 2;
  30. }
  31. return res;
  32. }
  33.  
  34. void pre()
  35. {
  36. f[0] = 1;
  37. inv[0] = 1;
  38.  
  39. for(int i = 1 ; i < N ; i++)
  40. {
  41. f[i] = (f[i - 1] * i) % MOD;
  42. }
  43.  
  44. inv[N - 1] = power(f[N - 1] , MOD - 2);
  45.  
  46. for(int i = N - 2 ; i >= 1 ; i--)
  47. {
  48. inv[i] = (inv[i + 1] * (i + 1)) % MOD;
  49. }
  50. }
  51.  
  52. ll nck(ll n , ll k)
  53. {
  54. if(k < 0 || k > n) return 0;
  55. return f[n] * inv[k] % MOD * inv[n - k] % MOD;
  56. }
  57.  
  58. signed main()
  59. {
  60. ios_base::sync_with_stdio(0);
  61. cin.tie(0);cout.tie(0);
  62.  
  63. freopen("wonderful.INP" , "r" , stdin);
  64. freopen("wonderful.OUT" , "w" , stdout);
  65.  
  66. pre();
  67.  
  68. cin >> n;
  69.  
  70. ll ans = 0;
  71. for(int i = 1 ; i <= n ; i++)
  72. {
  73. ll c1 = (n - i + 1) % MOD;
  74. ll c2 = (1 - ((i - 1) % MOD) * ((n - i) % MOD)) % MOD;
  75. ll ci = (c1 * c2) % MOD;
  76.  
  77. if(i % 2 == 0) ci = -ci;
  78. ci = (ci % MOD + MOD) % MOD;
  79. ans = (ans + ci * f[n - i]) % MOD;
  80. }
  81.  
  82. cout << ans;
  83. return 0;
  84. }
  85.  
  86. /// LeviHanlde
  87. /// みなさん、こんにちは!
  88.  
Success #stdin #stdout 0.01s 6808KB
stdin
Standard input is empty
stdout
Standard output is empty