2457. Minimum Addition to Make Integer Beautiful

Difficulty:
Related Topics:
Similar Questions:

Problem

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 (Java)

class Solution {
    public long makeIntegerBeautiful(long n, int target) {
        long result = 0, nCopy = n, beautyNumber = n;
        int digitSum = getDigitSum(nCopy), round = 1;
        if (digitSum <= target){
            return result;
        }

        while (digitSum > target){
            nCopy /= 10;
            beautyNumber = (long) ((nCopy + 1) * Math.pow(10, round));
            digitSum = getDigitSum(beautyNumber);
            round++;
        }
        return beautyNumber - n;
    }

    private static int getDigitSum(long n){
        int result = 0;
        while (n > 0){
            result += n % 10;
            n /= 10;
        }
        return result;
    }
}

Explain:

nope.

Complexity: