結果
問題 | No.1520 Zigzag Sum |
ユーザー | NatsubiSogan |
提出日時 | 2021-02-03 19:24:54 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
AC
|
実行時間 | 1,021 ms / 2,000 ms |
コード長 | 1,137 bytes |
コンパイル時間 | 84 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 42,220 KB |
最終ジャッジ日時 | 2024-09-25 11:33:03 |
合計ジャッジ時間 | 7,212 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 215 ms
42,120 KB |
testcase_01 | AC | 223 ms
42,092 KB |
testcase_02 | AC | 810 ms
42,068 KB |
testcase_03 | AC | 990 ms
42,220 KB |
testcase_04 | AC | 1,020 ms
42,188 KB |
testcase_05 | AC | 1,021 ms
42,176 KB |
testcase_06 | AC | 938 ms
42,132 KB |
testcase_07 | AC | 943 ms
42,204 KB |
ソースコード
mod = 10 ** 9 + 7 #順列 class Permutation: #前計算 def __init__(self, n): self.n = n self.fact = [1] * (self.n + 1) self.fact_inv = [1] * (self.n + 1) for i in range(1, self.n + 1): self.fact[i] = self.fact[i - 1] * i % mod self.fact_inv[-1] = invmod(self.fact[-1], mod) for i in range(self.n, 0, -1): self.fact_inv[i - 1] = self.fact_inv[i] * i % mod def perm(self, n, r): if n < r:return 0 if n < 0 or r < 0:return 0 return self.fact[n] * self.fact_inv[n - r] % mod #拡張ユークリッドの互除法 def extgcd(a, b, d = 0): g = a if b == 0: x, y = 1, 0 else: x, y, g = extgcd(b, a % b) x, y = y, x - a // b * y return x, y, g #mod pにおける逆元 def invmod(a, p): x, y, g = extgcd(a, p) x %= p return x hwmax = 4 * 10 ** 5 P = Permutation(hwmax) t = int(input()) for _ in range(t): h, w = map(int, input().split()) if h == 1 or w == 1: print(0) continue print(2 * P.perm(h + w - 3, h - 1) % mod * P.fact_inv[h - 2] % mod)