結果
問題 | No.2130 分配方法の数え上げ mod 998244353 |
ユーザー |
|
提出日時 | 2022-11-25 21:27:26 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 98 ms / 2,000 ms |
コード長 | 1,113 bytes |
コンパイル時間 | 344 ms |
コンパイル使用メモリ | 81,880 KB |
実行使用メモリ | 75,392 KB |
最終ジャッジ日時 | 2024-10-02 03:59:00 |
合計ジャッジ時間 | 3,075 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 38 |
ソースコード
def main(): from sys import stdin, setrecursionlimit # setrecursionlimit(1000000) input = stdin.readline def iinput(): return int(input()) def sinput(): return input().rstrip() def i0input(): return int(input()) - 1 def linput(): return list(input().split()) def liinput(): return list(map(int, input().split())) def miinput(): return map(int, input().split()) def li0input(): return list(map(lambda x: int(x) - 1, input().split())) def mi0input(): return map(lambda x: int(x) - 1, input().split()) INF = 1000000000000000000 MOD = 998244353 N = iinput() M = iinput() if M > N: print(0) return def modinv(a): b = MOD u, v = 1, 0 while b > 0: t = a // b a -= t * b a, b = b, a u -= t * v u, v = v, u return u % MOD ans = pow(2, N % (MOD - 1), MOD) tmp = 1 for k in range(M): ans -= tmp ans %= MOD tmp *= N - k tmp %= MOD tmp *= modinv(k + 1) tmp %= MOD print(ans) main()