LeetCode in Kotlin

2457. Minimum Addition to Make Integer Beautiful

Medium

You are given two positive integers n and target.

An integer is considered beautiful if the sum of its digits is less than or equal to target.

Return the minimum non-negative integer x such that n + x is beautiful. The input will be generated such that it is always possible to make n beautiful.

Example 1:

Input: n = 16, target = 6

Output: 4

Explanation: Initially n is 16 and its digit sum is 1 + 6 = 7. After adding 4, n becomes 20 and digit sum becomes 2 + 0 = 2. It can be shown that we can not make n beautiful with adding non-negative integer less than 4.

Example 2:

Input: n = 467, target = 6

Output: 33

Explanation: Initially n is 467 and its digit sum is 4 + 6 + 7 = 17. After adding 33, n becomes 500 and digit sum becomes 5 + 0 + 0 = 5. It can be shown that we can not make n beautiful with adding non-negative integer less than 33.

Example 3:

Input: n = 1, target = 1

Output: 0

Explanation: Initially n is 1 and its digit sum is 1, which is already smaller than or equal to target.

Constraints:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    fun makeIntegerBeautiful(n: Long, target: Int): Long {
        var n = n
        if (sumOfDigits(n) <= target) {
            return 0
        }
        val old = n
        var newNumber: Long = 1
        while (sumOfDigits(n) > target) {
            newNumber = newNumber * 10
            n = n / 10 + 1
        }
        newNumber = n * newNumber
        return newNumber - old
    }

    fun sumOfDigits(n: Long): Long {
        var n = n
        var sum: Long = 0
        while (n > 0) {
            sum = sum + n % 10
            n = n / 10
        }
        return sum
    }
}