結果

問題 No.2409 Strange Werewolves
ユーザー 👑 AngrySadEight
提出日時 2023-07-11 13:57:18
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 571 ms / 2,000 ms
コード長 996 bytes
コンパイル時間 820 ms
コンパイル使用メモリ 77,028 KB
最終ジャッジ日時 2025-02-15 09:44:59
ジャッジサーバーID
(参考情報)
judge3 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 16
権限があれば一括ダウンロードができます

ソースコード

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

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
ll my_pow(ll x, ll n, ll mod) {
ll ret;
if (n == 0) {
ret = 1;
} else if (n % 2 == 1) {
ret = (x * my_pow((x * x) % mod, n / 2, mod)) % mod;
} else {
ret = my_pow((x * x) % mod, n / 2, mod);
}
return ret;
}
ll inv(ll x, ll mod) { return my_pow(x, mod - 2, mod); }
ll mod = 998244353;
int main() {
ll X, Y, Z, W;
cin >> X >> Y >> Z >> W;
vector<ll> fact(600005);
fact[0] = 1;
for (ll i = 0; i < 600004; i++) {
fact[i + 1] = (fact[i] * (i + 1)) % mod;
}
vector<ll> fact_inv(600005);
for (ll i = 0; i < 600005; i++) {
fact_inv[i] = inv(fact[i], mod);
}
if (Z == 0) {
swap(X, Y);
swap(Z, W);
}
ll ans = (fact[X] * ((fact_inv[X - Z] * fact_inv[Z]) % mod)) % mod;
ans = (ans * Y) % mod;
ans = (ans * fact[X + Y - Z - W - 1]) % mod;
cout << ans << endl;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0