けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

鉄則本 A28 - Blackboard (5Q, ★2)

mod の練習。鉄則本の問題なので、コードのみ。

問題概要

最初、黒板に 0 という数が書かれている。以下の  N 回の操作を実行せよ。各操作では文字  T と数  A が与えられる。

  •  T = '+' のとき:黒板に書かれた数を、  A を足した数に書き直す
  •  T = '-' のとき:黒板に書かれた数を、  A を引いた数に書き直す
  •  T = '*' のとき:黒板に書かれた数を、  A をかけた数に書き直す

各操作が終わった後について、黒板に書かれた数を 10000 で割った余りを答えよ。

制約

  •  1 \le N \le 10^{5}
  •  1 \le A \le 100

コード

#include <bits/stdc++.h>
using namespace std;
const int MOD = 10000;

int main() {
    long long N, A, res = 0;
    char T;
    cin >> N;

    for (int i = 0; i < N; i++) {
        cin >> T >> A;
        if (T == '+') res = (res + A) % MOD;
        else if (T == '-') res = ((res - A) % MOD + MOD) % MOD;
        else res = (res * A) % MOD;

        cout << res << endl;
    }
}