ABC298D - Writing a Numeral

考え方

※Python の剰余演算子%は,除数(割る方の数)と同じ符号の結果を返す.

回答例

from collections import deque
Q = int(input())
mod = 998244353

S = deque([1])
ans = 1
for _ in range(Q):
    q = list(map(int, input().split()))
    if q[0] == 1:
        ans = 10 * ans + q[1]
        ans %= mod
        S.append(q[1])
    elif q[0] == 2:
        num = S.popleft()
        ans -= pow(10, len(S), mod) * num
        ans %= mod
    elif q[0] == 3:
        print(ans)

先に$10^n$を計算しておく例:Submission #40652135 - TOYOTA MOTOR CORPORATION Programming Contest 2023#1 (AtCoder Beginner Contest 298)