10071 2024. 03. 26 11:49:39 Error42 Számlexikon cpp17 Hibás válasz 50/100 7ms 3520 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 50/100
1 Elfogadva 0/0 3ms 1972 KiB
2 Hibás válasz 0/0 7ms 2244 KiB
3 Elfogadva 10/10 3ms 2324 KiB
4 Hibás válasz 0/10 3ms 2388 KiB
5 Hibás válasz 0/10 3ms 2752 KiB
6 Elfogadva 10/10 2ms 2680 KiB
7 Elfogadva 10/10 3ms 2680 KiB
8 Elfogadva 10/10 3ms 2900 KiB
9 Elfogadva 10/10 7ms 3136 KiB
10 Hibás válasz 0/10 7ms 3236 KiB
11 Hibás válasz 0/10 7ms 3352 KiB
12 Hibás válasz 0/10 6ms 3520 KiB