AtCoder Beginner Contest 298 D問題 Writing a Numeral
問題
提出解答
問題の概要
で初期化された文字列がある. 次の
個のクエリを順に処理せよ.
- Type 1:
の末尾に数字
を追加する.
- Type 2:
の先頭の文字を削除する.
- Type 3:
を十進数表記の数とみなした整数を
で割った余りを出力する
制約
.
- Type 1
は数字
のどれか.
- Type 2
の長さは
以上.
- Type 3
- このタイプのクエリは存在する.
解法
をキューと見なす. このとき, 次のように処理することで, 高速に計算できる. ただし,
を整数
で初期化し,
が Type 3 における解答とする.
- Type 1:
の末尾に
を追加し,
とする.
- Type 2:
の長さを
とする. このとき,
の先頭の要素を pop し, その要素を
とする. そして,
から
を引く.
- Type 3:
を出力する.
ここで, は非常に大きくなるので,
の更新と
の計算においては
で計算しなければならない.