結果

問題 No.2544 Many RMQ Problems
ユーザー Carpenters-Cat
提出日時 2023-11-24 22:25:33
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 20 ms / 2,000 ms
コード長 739 bytes
コンパイル時間 3,452 ms
コンパイル使用メモリ 250,588 KB
最終ジャッジ日時 2025-02-18 00:18:54
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
#include <atcoder/all>
using namespace atcoder;
using mint = modint998244353;
int main () {
	int N, Q;
	cin >> N >> Q;
	mint qsum = N;
	qsum = (qsum * (N + 1)) / 2;
	mint ans = 0;
	mint kai[1000020], fkai[1000020];
	kai[0] = 1;
	for (int i = 1; i <= N + 1; i ++) {
		kai[i] = kai[i - 1] * i;
	}
	fkai[N + 1] = kai[N + 1].inv();
	for (int i = N + 1; i ; i --) {
		fkai[i - 1] = fkai[i] * i;
	}
	auto comb = [&] (int n, int r) -> mint {
		if (n < 0 || r < 0 || n < r) return 0;
		return kai[n] * fkai[r] * fkai[n - r];
	};
	for (int d = 1; d <= N; d ++) {
		mint kj = kai[d] * kai[N - d + 1] * comb(N + 1, d - 1);
		ans += kj;
	}
	ans *= Q;
	ans *= qsum.pow(Q - 1);
	cout << ans.val() << endl;
}
0