제출 #1337265

#제출 시각아이디문제언어결과실행 시간메모리
1337265neptunnsTrol (COCI19_trol)C++20
20 / 50
1103 ms242232 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;
    int last = 0;
    while (q--) {
        int l, r;
        cin >> l >> r;
        l--;
        if (mp.find(r) == mp.end()) {
            int sum = mp[last];
            for (int i = last + 1; i <= r; i++) {
                sum += sumd(i);
                mp[i] = sum;
            }
        }
        last = max(last, r);
        cout << mp[r] - mp[l] << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...