結果
| 問題 | No.3476 {2^n-1}-gon |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-03-21 10:00:11 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 114 ms / 2,000 ms |
| コード長 | 791 bytes |
| 記録 | |
| コンパイル時間 | 126 ms |
| コンパイル使用メモリ | 85,296 KB |
| 実行使用メモリ | 95,980 KB |
| 最終ジャッジ日時 | 2026-03-21 10:00:14 |
| 合計ジャッジ時間 | 2,716 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 18 |
ソースコード
n = 10 ** 9
k = 2 * 10 ** 6
mod = 998244353
# def modinv(x):
# xの逆元を求める際に[mod % x]の逆元が必要なので、関数の形でxの逆元を直接求めることは難しい。再帰を使えば行けそうだけど。
modinv_table = [-1] * (k+1)
modinv_table[1] = 1
for i in range(2, k+1):
modinv_table[i] = (-modinv_table[mod % i] * (mod // i)) % mod
def binomial_coefficients(n, k):
ans = 1
for i in range(k):
ans *= n-i
ans *= modinv_table[i + 1]
ans %= mod
return ans
N, M = map(int, input().split())
tot = binomial_coefficients(pow(2, N, mod) - 1, M)
res = (pow(2, N, mod) - 1) * binomial_coefficients(pow(2, N - 1, mod) - 1, M - 1) % mod
if N < 30 and pow(2, N - 1) < M:
print(tot)
else:
print((tot - res) % mod)