Submission #1261874

#TimeUsernameProblemLanguageResultExecution timeMemory
1261874abulatTrol (COCI19_trol)C++20
30 / 50
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main() {
  int Q;
  cin >> Q;
  while (Q--) {
    int l, r;
    cin >> l >> r;
    int start;
    int end;
    int sum = 0;
    int pref[10] = {0, 1, 3, 6, 10, 15, 21, 28, 36, 45};
    int rev[9] = {0, 8, 15, 21, 26, 30, 33, 35, 36};
    if (l / 9 == r / 9) {
      while (l <= r) {
        if (l % 9 == 0)
          sum += 9;
        else
          sum += l % 9;
        l++;
      }
      cout << sum << '\n';
      continue;
    }
    start = l;
    end = r;
    if (start % 9 == 0) {
      // cout << "how\n";
      start = (l / 9) * 9;
    } else {
      start = (l / 9) * 9 + 9;
      // cout << "rev[start-l] start, l " << start << ", " << l << '\n';
      sum += rev[(start - l)];
    }
    end = (r / 9) * 9;
    sum += pref[(r - end)];
    if (start == end) {
      sum += 9;
    } else if (end == start + 9) {
      // cout << "sum: " << sum << '\n';
    } else {
      // cout << (end / 9) << " " << (start / 9) << " haha\n";
      sum += ((end / 9) - (start / 9)) * 45;
      sum += 9;
    }

    cout << sum << '\n';
    // cout << start << " " << end << "\n";
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...