結果
問題 | No.1102 Remnants |
ユーザー | Amamori |
提出日時 | 2020-07-05 20:49:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 343 ms / 2,000 ms |
コード長 | 1,144 bytes |
コンパイル時間 | 274 ms |
コンパイル使用メモリ | 82,584 KB |
実行使用メモリ | 102,964 KB |
最終ジャッジ日時 | 2024-09-22 21:17:48 |
合計ジャッジ時間 | 6,635 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 49 ms
62,800 KB |
testcase_01 | AC | 50 ms
64,628 KB |
testcase_02 | AC | 49 ms
62,620 KB |
testcase_03 | AC | 52 ms
62,956 KB |
testcase_04 | AC | 51 ms
64,088 KB |
testcase_05 | AC | 221 ms
93,752 KB |
testcase_06 | AC | 94 ms
80,884 KB |
testcase_07 | AC | 343 ms
102,964 KB |
testcase_08 | AC | 74 ms
79,360 KB |
testcase_09 | AC | 76 ms
79,344 KB |
testcase_10 | AC | 62 ms
72,988 KB |
testcase_11 | AC | 85 ms
79,404 KB |
testcase_12 | AC | 93 ms
79,576 KB |
testcase_13 | AC | 78 ms
79,208 KB |
testcase_14 | AC | 157 ms
86,708 KB |
testcase_15 | AC | 140 ms
84,608 KB |
testcase_16 | AC | 266 ms
95,388 KB |
testcase_17 | AC | 293 ms
94,696 KB |
testcase_18 | AC | 287 ms
96,740 KB |
testcase_19 | AC | 146 ms
84,232 KB |
testcase_20 | AC | 95 ms
80,184 KB |
testcase_21 | AC | 211 ms
89,680 KB |
testcase_22 | AC | 275 ms
94,616 KB |
testcase_23 | AC | 225 ms
89,764 KB |
testcase_24 | AC | 178 ms
86,232 KB |
testcase_25 | AC | 315 ms
96,892 KB |
testcase_26 | AC | 85 ms
79,444 KB |
testcase_27 | AC | 137 ms
82,956 KB |
ソースコード
mod = 10**9+7 def inv(a, mod): r = [1, 0, a] w = [0, 1, mod] while w[2] != 1: q = r[2]//w[2] r_new = [r[0]-q*w[0], r[1]-q*w[1], r[2]-q*w[2]] r = w w = r_new x, y = w[0], w[1] # a*x+y*mod = 1 return (mod+x % mod) % mod max_num = 2*10**5+1 # 10**6 にしたほうがよい? fact = [0 for _ in range(max_num)] ifact = [0 for _ in range(max_num)] fact[0] = fact[1] = 1 ifact[0] = ifact[1] = 1 for i in range(2, max_num): fact[i] = fact[i-1] * i % mod ifact[max_num-1] = inv(fact[max_num-1], mod) for i in range(2, max_num): ifact[max_num-i] = (ifact[max_num-i+1] * (max_num-i+1)) % mod def comb(x, y): if x < 0 or y < 0 or x < y: return 0 else: return fact[x] * ifact[y] * ifact[x-y] % mod n, k = map(int, input().split()) a = [int(x) for x in input().split()] ans = 0 cl = 1 cr = ifact[n-1] for i in range(n-1): cr *= (k+n-1-i) cr %= mod for i in range(n): ans += a[i]*cl*cr ans %= mod if i == n-1: continue cl *= (k+i+1)*inv(i+1, mod) cr *= (n-1-i)*inv(k+n-1-i, mod) cl %= mod cr %= mod print(ans)