結果
問題 |
No.1681 +-*
|
ユーザー |
![]() |
提出日時 | 2025-03-31 17:22:22 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 117 ms / 2,000 ms |
コード長 | 1,003 bytes |
コンパイル時間 | 478 ms |
コンパイル使用メモリ | 82,624 KB |
実行使用メモリ | 102,684 KB |
最終ジャッジ日時 | 2025-03-31 17:23:20 |
合計ジャッジ時間 | 3,224 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
MOD = 10**9 + 7 N = int(input()) A = list(map(int, input().split())) if N == 0: print(0) elif N == 1: print(A[0] % MOD) else: sum_total = 0 prod_total = A[0] % MOD count = 1 for i in range(1, N): a = A[i] % MOD # Contributions from '+', '-', '*' new_sum_plus = (sum_total + prod_total) % MOD new_prod_plus = (a * count) % MOD new_sum_minus = (sum_total + prod_total) % MOD new_prod_minus = (-a * count) % MOD new_sum_mul = sum_total % MOD new_prod_mul = (prod_total * a) % MOD # Update sum_total and prod_total by combining contributions sum_total = (new_sum_plus + new_sum_minus + new_sum_mul) % MOD prod_total = (new_prod_plus + new_prod_minus + new_prod_mul) % MOD # Ensure prod_total is positive if prod_total < 0: prod_total += MOD count = (count * 3) % MOD result = (sum_total + prod_total) % MOD print(result)