結果
問題 |
No.995 タピオカオイシクナーレ
|
ユーザー |
![]() |
提出日時 | 2025-03-20 18:59:19 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 71 ms / 2,000 ms |
コード長 | 928 bytes |
コンパイル時間 | 236 ms |
コンパイル使用メモリ | 82,116 KB |
実行使用メモリ | 87,672 KB |
最終ジャッジ日時 | 2025-03-20 19:00:02 |
合計ジャッジ時間 | 2,358 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
MOD = 10**9 + 7 def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx += 1 M = int(input[idx]); idx += 1 K = int(input[idx]); idx += 1 p = int(input[idx]); idx += 1 q = int(input[idx]); idx += 1 b = list(map(int, input[idx:idx+N])) idx += N # Calculate initial states s = [0] * N for i in range(M): s[i] = 1 inv_q = pow(q, MOD-2, MOD) mod_val = (q - 2 * p) % MOD mod_val = (mod_val + MOD) % MOD # Ensure non-negative t = (mod_val * inv_q) % MOD t_pow = pow(t, K, MOD) inv_2 = pow(2, MOD-2, MOD) ans = 0 for i in range(N): if s[i]: e = ( (t_pow + 1) * inv_2 ) % MOD else: numerator = (1 - t_pow) % MOD e = (numerator * inv_2) % MOD e = e * b[i] % MOD ans = (ans + e) % MOD print(ans) if __name__ == "__main__": main()