結果
問題 |
No.995 タピオカオイシクナーレ
|
ユーザー |
![]() |
提出日時 | 2025-03-20 18:58:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 67 ms / 2,000 ms |
コード長 | 941 bytes |
コンパイル時間 | 398 ms |
コンパイル使用メモリ | 82,328 KB |
実行使用メモリ | 85,208 KB |
最終ジャッジ日時 | 2025-03-20 18:59:45 |
合計ジャッジ時間 | 2,790 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
MOD = 10**9 + 7 def main(): import sys input = sys.stdin.read data = input().split() ptr = 0 N = int(data[ptr]) ptr +=1 M = int(data[ptr]) ptr +=1 K = int(data[ptr]) ptr +=1 p = int(data[ptr]) ptr +=1 q = int(data[ptr]) ptr +=1 b = [] for _ in range(N): b.append(int(data[ptr]) % MOD) ptr +=1 inv_q = pow(q, MOD-2, MOD) q_minus_2p = (q - 2 * p) % MOD a_mod = (q_minus_2p * inv_q) % MOD a_mod_pow_k = pow(a_mod, K, MOD) inv_2 = pow(2, MOD-2, MOD) ans = 0 for i in range(N): if i < M: term = (a_mod_pow_k * inv_2) % MOD term = (term + inv_2) % MOD else: term = (1 - a_mod_pow_k) % MOD term = (term * inv_2) % MOD contribution = (b[i] * term) % MOD ans = (ans + contribution) % MOD print(ans) if __name__ == "__main__": main()