本题我之前也是和题解一样的想法,增加数还让它和变小只有进位操作可以。
关键在写法上,我是转为字符串去计算每次增加多少,比较麻烦。这种做法还是比较好,记录下。
class Solution {
public:
long long makeIntegerBeautiful(long long n, int target) {
long long cur=n;
long long i=10;
while(true){
int cursum=func(cur);
if(cursum<=target)
return cur-n; //第一次 第二次
cur/=i; //123->12 130->1
cur++; //12->13 1->2
cur*=i; //13->130 2->200
i*=10; //注意,不可以将i变为10,因为随着次数增加,第一次需要10.第二次需要100
}
return 0;
}
int func(long long cur){
int sum=0;
while(cur>0){
sum+=cur%10;
cur/=10;
}
return sum;
}
};