[R42B]前导0


数据规模:1mn1001 \le m \le n \le 100aa 是一个无前导零的 mm 位正整数。

思路

由于 aa 最多有 100100 位,不能将它作为整数处理,直接保留其字符串形式。

目标串需要恰好有 nn 位,而 aa 已有 mm 位,所以先连续加入 nmn - m0,再接上原字符串 aa。这样得到的字符串长度为 nn,且后缀完全保留原数,正是所求结果。

复杂度

时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)

仓颉实现

import std.convert.*
import std.env.*

main(): Int64 {
    let reader = getStdIn()
    let parts = reader.readln().getOrThrow().split(" ", removeEmpty: true)
    let n = Int64.parse(parts[0])
    let m = Int64.parse(parts[1])
    let a = parts[2]

    let sb = StringBuilder()
    var i = m
    while (i < n) {
        sb.append("0")
        i += 1
    }
    sb.append(a)
    println(sb.toString())
    return 0
}