結果
問題 | No.2457 Stampaholic (Easy) |
ユーザー |
![]() |
提出日時 | 2025-04-09 20:56:08 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 764 ms / 4,000 ms |
コード長 | 989 bytes |
コンパイル時間 | 525 ms |
コンパイル使用メモリ | 82,448 KB |
実行使用メモリ | 64,284 KB |
最終ジャッジ日時 | 2025-04-09 20:56:46 |
合計ジャッジ時間 | 6,994 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
MOD = 998244353 def modinv(a): return pow(a, MOD-2, MOD) def compute_counts(a, K): counts = {} if a >= K: for x in range(1, K): counts[x] = 2 counts[K] = a - K + 1 else: for x in range(1, a): counts[x] = 2 if a in counts: counts[a] += (K - a) + 1 else: counts[a] = (K - a) + 1 return counts H, W, N, K = map(int, input().split()) a = H - K + 1 b = W - K + 1 dx_counts = compute_counts(a, K) dy_counts = compute_counts(b, K) inv_ab = modinv((a % MOD) * (b % MOD) % MOD) total = 0 for x, cnt_x in dx_counts.items(): x_mod = x % MOD for y, cnt_y in dy_counts.items(): y_mod = y % MOD xy = (x_mod * y_mod) % MOD term = ((a * b - x * y) % MOD) * inv_ab % MOD pow_term = pow(term, N, MOD) prob = (1 - pow_term) % MOD res = (cnt_x * cnt_y) % MOD res = res * prob % MOD total = (total + res) % MOD print(total)