给你两个正整数 n
和 target
。
如果某个整数每一位上的数字相加小于或等于 target
,则认为这个整数是一个 美丽整数 。
找出并返回满足 n + x
是 美丽整数 的最小非负整数 x
。生成的输入保证总可以使 n
变成一个美丽整数。
示例 1:
输入:n = 16, target = 6
输出:4
解释:最初,n 是 16 ,且其每一位数字的和是 1 + 6 = 7 。在加 4 之后,n 变为 20 且每一位数字的和变成 2 + 0 = 2 。可以证明无法加上一个小于 4 的非负整数使 n 变成一个美丽整数。
思路:
不断的+1,产生进位然后和数进行对比
class Solution { public int getSum(long n ){ int sum=0; while(n>0){ sum+=n%10; n/=10; } return sum; } public long makeIntegerBeautiful(long n, int target) { if(getSum(n)<=target) return 0; long mod=10L,res=0L; while(getSum(n)>target){ long t=mod-n%mod; res+=t; n+=t; mod*=10; } return res; } }