結果

問題 No.3004 ヤング図形
ユーザー Mao-beta
提出日時 2025-02-03 14:40:21
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2,572 ms / 4,000 ms
コード長 2,083 bytes
コンパイル時間 2,861 ms
コンパイル使用メモリ 205,920 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2025-02-03 14:41:16
合計ジャッジ時間 44,603 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MOD99 = 998244353;
// safe_mod: a % mod mod
inline ll safe_mod(ll a, ll mod = MOD99) {
ll res = a % mod;
if (res < 0) res += mod;
return res;
}
// modPow: a^b (mod mod)
ll modPow(ll a, ll b, ll mod = MOD99) {
ll res = 1 % mod;
a = safe_mod(a, mod);
while (b > 0) {
if (b & 1)
res = safe_mod(res * a, mod);
a = safe_mod(a * a, mod);
b >>= 1;
}
return res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int K;
cin >> K;
vector<pair<int, int>> LM(K);
ll N = 0;
for (int i = 0; i < K; i++){
int l, m;
cin >> l >> m;
LM[i] = {l, m};
N += static_cast<ll>(l) * m;
}
// D i fac
unordered_map<int, vector<int>> D;
for (auto &p : LM) {
int l = p.first, m = p.second;
D[l].push_back(m); // (l!)^m
D[m].push_back(1); // (m!)
}
ll ans = 1;
ll fac = 1; // 1 i (i! mod MOD99)
for (int i = 1; i <= N; i++){
fac = safe_mod(fac * i, MOD99); // fac = i!
ans = safe_mod(ans * i, MOD99); // ans = N!
// i D[i] k
// ans fac^k
if (D.find(i) != D.end()){
for (int k : D[i]) {
ll temp = modPow(fac, k, MOD99); // temp = fac^k (mod MOD99)
ll inv = modPow(temp, MOD99 - 2, MOD99); // inv = temp^(-1) (mod MOD99)
ans = safe_mod(ans * inv, MOD99);
}
}
}
cout << ans << "\n";
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0