[AtCoder] AtCoder Beginner Contest 298 D. Writing a Numeral

TaeGN·2024년 11월 4일

AtCoder

목록 보기
40/55

문제풀이

  1. 각 쿼리마다 나머지를 계산한다.

주의사항


소요시간

10분


package AtCoder.ProblemList.Difficulty800_1199.WritingaNumeral

const val MOD = 998244353
fun main() {
    val queue = ArrayDeque<Int>()
    queue.add(1)
    var q = 1L
    val Q = readln().trim().toInt()
    val pow10 = IntArray(Q + 1).apply { this[0] = 1 }
    for (i in 1..Q) {
        pow10[i] = (pow10[i - 1].toLong() * 10 % MOD).toInt()
    }
    val sb = StringBuilder()
    repeat(Q) {
        val input = readln().trim().split(" ").map(String::toInt)
        when (input.first()) {
            1 -> {
                q = (q * 10 + input.last()) % MOD
                queue.add(input.last())
            }

            2 -> q = (q + MOD - (queue.removeFirst().toLong() * pow10[queue.size] % MOD)) % MOD
            3 -> sb.appendLine(q)
        }
    }
    println(sb)
}

문제링크

https://atcoder.jp/contests/abc298/tasks/abc298_d

0개의 댓글