結果
| 問題 |
No.2048 L(I+D)S
|
| コンテスト | |
| ユーザー |
degydegy
|
| 提出日時 | 2024-09-20 06:39:13 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 19 ms / 2,000 ms |
| コード長 | 921 bytes |
| コンパイル時間 | 1,511 ms |
| コンパイル使用メモリ | 166,820 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-20 06:39:16 |
| 合計ジャッジ時間 | 2,334 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5 + 7;
const int mod = 998244353;
int fact[NMAX];
int lgpow(int b, int e) {
int ret = 1;
while(e) {
if(e & 1) ret = (1LL * ret * b) % mod;
b = (1LL * b * b) % mod;
e /= 2;
}
return ret;
}
int main() {
fact[0] = 1;
for(int i = 1; i < NMAX; i++) fact[i] = (1LL * fact[i - 1] * i) % mod;
int n; cin >> n;
int ans = 0;
for(int k = 2; k <= n - 2; k++) {
int upper = fact[n];
int lower = 1;
lower = (1LL * lower * (n - 1)) % mod;
lower = (1LL * lower * fact[k - 2]) % mod;
lower = (1LL * lower * fact[n - k - 2]) % mod;
lower = (1LL * lower * k) % mod;
lower = (1LL * lower * (n - k)) % mod;
int cnt = (1LL * upper * lgpow(lower, mod - 2)) % mod;
ans = (1LL * ans + 1LL * cnt * cnt) % mod;
}
cout << ans << endl;
}
degydegy