結果
問題 | No.2048 L(I+D)S |
ユーザー |
![]() |
提出日時 | 2024-12-30 22:26:19 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 8 ms / 2,000 ms |
コード長 | 1,081 bytes |
コンパイル時間 | 11,782 ms |
コンパイル使用メモリ | 244,152 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-30 22:34:32 |
合計ジャッジ時間 | 17,272 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 16 |
ソースコード
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 5 , MOD = 998244353;int Qpow(ll x , ll p){ll res = 1;x %= MOD , p %= MOD - 1;if(p < 0)p += MOD - 1;for(; p ; p >>= 1 , x = x * x % MOD)if(p & 1)res = res * x % MOD;return res;}int fac[N] , ifac[N] , inv[N];void Init(int n){fac[0] = ifac[0] = 1;for(int i = 1 ; i <= n ; i++)fac[i] = (ll)fac[i - 1] * i % MOD;ifac[n] = Qpow(fac[n] , MOD - 2);for(int i = n - 1 ; i >= 1 ; i--)ifac[i] = (ll)ifac[i + 1] * (i + 1) % MOD;for(int i = 1 ; i <= n ; i++)inv[i] = (ll)ifac[i] * fac[i - 1] % MOD;}int C(int n , int m){if(n < m || m < 0)return 0;return (ll)fac[n] * ifac[m] % MOD * ifac[n - m] % MOD;}int main(){ios::sync_with_stdio(0);cin.tie(0) , cout.tie(0);int n; cin >> n; Init(n);int ans = 0;for(int a = 2 ; a <= n - 2 ; a++){int b = n - a;ll t = ((ll)inv[a] * inv[b] % MOD)* ((ll)ifac[a - 2] * ifac[b - 2] % MOD) % MOD* ((ll)fac[n] * inv[n - 1] % MOD) % MOD;ans = (ans + t * t) % MOD;}cout << ans << "\n";return 0;}