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: を出力する.
ここで, は非常に大きくなるので, の更新と の計算においては で計算しなければならない.