結果

問題 No.510 二次漸化式
ユーザー lam6er
提出日時 2025-03-31 17:43:18
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,278 bytes
コンパイル時間 238 ms
コンパイル使用メモリ 82,172 KB
実行使用メモリ 81,676 KB
最終ジャッジ日時 2025-03-31 17:44:21
合計ジャッジ時間 24,798 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 21 TLE * 1 -- * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

MOD = 10**9 + 7

import sys

def main():
    input = sys.stdin.read().split()
    ptr = 0
    n = int(input[ptr])
    ptr += 1
    q = int(input[ptr])
    ptr += 1
    
    x = [0] * n
    y = [0] * n
    answers = []
    
    for _ in range(q):
        cmd = input[ptr]
        ptr += 1
        if cmd == 'x':
            i = int(input[ptr])
            ptr += 1
            v = int(input[ptr])
            ptr += 1
            x[i] = v % MOD
        elif cmd == 'y':
            i = int(input[ptr])
            ptr += 1
            v = int(input[ptr])
            ptr += 1
            y[i] = v % MOD
        elif cmd == 'a':
            i = int(input[ptr])
            ptr += 1
            if i == 0:
                answers.append(1)
                continue
            total = 0
            b_prev = 1
            for k in range(i):
                if k == 0:
                    b_k = 1
                else:
                    b_k = (y[k-1] * b_prev + 1) % MOD
                term = (x[k] * b_k) % MOD
                term = (term * b_k) % MOD
                total = (total + term) % MOD
                b_prev = b_k
            ans = (total + 1) % MOD
            answers.append(ans)
    
    print('\n'.join(map(str, answers)))

if __name__ == '__main__':
    main()
0