Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- #include <ext/pb_ds/tree_policy.hpp>
- using namespace std;
- using namespace __gnu_pbds;
- #define int long long
- #define pb push_back
- #define all(s) s.begin(),s.end()
- #define rall(s) s.rbegin(),s.rend()
- #define pii pair<int,int>
- #define fr first
- #define sc second
- #define bst ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
- #define endl "\n"
- #define no cout << "NO" << endl;
- #define yes cout << "YES" << endl;
- typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
- const int N = 5e5 + 10, mod = 1e9 + 7, inf = 1e18 + 7, logn = 23;
- const double pi = acos(-1);
- int bpow(int a, int n) {
- int res = 1;
- while(n) {
- if(n & 1) {
- res *= a;
- }
- n/=2;
- a *= a;
- }
- return res;
- }
- void solve() {
- //soln
- int n, s;
- cin >> n >> s;
- vector<int> a;
- int tmp = n;
- while(n > 0) {
- a.pb(n % 10);
- n /= 10;
- }
- n = tmp;
- if(accumulate(all(a), 0) <= s) {
- cout << 0 << endl;
- return;
- }
- reverse(all(a));
- int pref = 0;
- int pos = 0;
- for(int i = 0; i < a.size(); i++) {
- pref += a[i];
- if(pref > s) {
- pos = i;
- break;
- }
- }
- int ans = 0;
- pos = a.size() - pos;
- while(pref > s && pos <= 20) {
- int pw = bpow(10, pos - 1);
- int cur = (int)(n / pw) % 10;
- pref -= (cur - 1);
- ans += (int)(bpow(10, pos - 1) - (n % pw));
- ans += (10 - cur - 1) * pw;
- n += bpow(10, pos);
- n -= n % bpow(10, pos);
- pos++;
- }
- cout << ans << endl;
- }
- main() {
- bst;
- int t = 1;
- cin >> t;
- while(t--) {
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement