10072 2024. 03. 26 11:53:19 Error42 Számlexikon cpp17 Elfogadva 100/100 7ms 3680 KiB
#include <cassert>
#include <climits>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

using ll = long long;

void solve() {
    // These are swapped everywhere!
    ll p, k;
    cin >> p >> k;

    string const ps = to_string(p);

    ll lo = 1;
    ll hi = 0;

    for (ll i = 0; i < ps.size(); i++) {
        hi = hi * 10 + (ps[i] - '0');

        k -= hi - lo + 1;

        lo *= 10;
    }

    assert(hi == p);

    if (k < 0) {
        cout << "0\n";
        return;
    }

    if (k == 0) {
        cout << p << "\n";
        return;
    }

    hi--;

    while (true) {
        hi = hi * 10 + 9;

        ll const added = hi - lo + 1;

        if (added == 0) {
            cout << "0\n";
            return;
        }

        if (added >= k) {
            cout << lo - 1 + k << "\n";
            return;
        }

        k -= added;

        lo *= 10;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    cin >> t;

    while (t--)
        solve();
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 100/100
1 Elfogadva 0/0 3ms 1832 KiB
2 Elfogadva 0/0 7ms 2172 KiB
3 Elfogadva 10/10 3ms 2264 KiB
4 Elfogadva 10/10 3ms 2620 KiB
5 Elfogadva 10/10 3ms 2572 KiB
6 Elfogadva 10/10 3ms 2664 KiB
7 Elfogadva 10/10 2ms 2752 KiB
8 Elfogadva 10/10 3ms 2964 KiB
9 Elfogadva 10/10 7ms 3332 KiB
10 Elfogadva 10/10 7ms 3264 KiB
11 Elfogadva 10/10 7ms 3392 KiB
12 Elfogadva 10/10 6ms 3680 KiB