Decrease the Sum of Digits"/>
(cf)Decrease the Sum of Digits
题意:至少加几使得n的位数之和小于等于s。
题解:可以发现,当n不断加一时位数之和一般是增加的,只有增加到10的倍数位数之和才会减小,所以每次增加到离n最近的10的倍数,得出最小值。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int f(ll n)
{int res = 0;while (n)res += n % 10, n /= 10;return res;
}
int main()
{int t, s;ll n;cin >> t;while (t--){cin >> n >> s;if (f(n) <= s) cout << 0 << endl;else{ll ans = 0, tt = 1;while (f(n) > s){if (n % 10 == 0) n /= 10, tt *= 10;else n++, ans += tt;}cout << ans << endl;}}
}
更多推荐
(cf)Decrease the Sum of Digits
发布评论