結果

問題 No.1681 +-*
ユーザー lam6er
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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)
0