제출 #1337278

#제출 시각아이디문제언어결과실행 시간메모리
1337278neptunnsTrol (COCI19_trol)C++20
40 / 50
1 ms344 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define maxn 303
#define mi LLONG_MIN
#define ma LLONG_MAX
#define mod 1000000007
#define pb push_back
#define S second
#define F first
map<int, int> sums;
int sumd(int x) {
    if (sums.find(x) != sums.end()) {
        return sums[x];
    }
    if (x < 10) {
        sums[x] = x;
        return sums[x];
    }
    int sum = 0;
    while (x > 0) {
        sum += x % 10;
        x /= 10;
    }
    sums[x] = sumd(sum);
    return sums[x];
}

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int q;
    cin >> q;
    map<int, int> mp;
    vector<int> pref(10, 0);
    for (int i = 1; i <= 9; i++) {
        pref[i] = pref[i - 1] + i;
    }
    while (q--) {
        int l, r;
        cin >> l >> r;
        int l1 = (l % 9 == 0 ? 9 : (l % 9));
        int r1 = (r % 9 == 0 ? 9 : (r % 9));
        int cnt = max(0LL, ((r - r1 - (l - l1 + 9)) / 9));
        int suml = pref[9] - pref[l1 - 1];
        int sumr = pref[r1];
        if (r - l < 9) {
            suml = pref[r1] - pref[l1 - 1];
            sumr = 0;
        }
        cout << suml + sumr + cnt * pref[9] << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...