49882023-04-08 15:40:38TomaSajtHázszámokcpp17Hibás válasz 25/1004ms5404 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int base;

map<pair<int, int>, ll> mem;
// I have no idea how this works, just started messing around with formulas on
// OEIS and got this working

// calculates the number of `d` digits used from `1..n`
ll pog(ll n, int d) {
  if (n <= 0)
    return 0;
  if (mem.count({n, d})) {
    return mem.at({n, d});
  }
  ll r = n % base;
  ll q = n / base;
  ll res = q + (r + 1) * pog(q, d) + (base - r - 1) * pog(q - 1, d);
  if (d != 0 && r >= d) {
    res++;
  }
  return mem[make_pair(n, d)] = res;
}

int main() {
  cin >> base;
  vector<ll> budget(base);
  for (auto &b : budget)
    cin >> b;
  auto is_enough = [&](ll n) {
    for (int i = 0; i < base; i++) {
      ll a = pog(n, i);
      if (a > budget[i])
        return false;
    }
    return true;
  };

  ll curr = 0;
  for (int i = 28; i >= 0; i--) {
    ll next = curr + (1ll << i);
    if (is_enough(next)) {
      curr = next;
    }
  }
  cout << curr;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1812 KiB
2Elfogadva3ms2228 KiB
3Hibás válasz4ms2512 KiB
subtask225/25
4Elfogadva3ms2344 KiB
5Elfogadva3ms2456 KiB
6Elfogadva3ms2668 KiB
7Elfogadva3ms2660 KiB
8Elfogadva3ms2912 KiB
9Elfogadva3ms2888 KiB
10Elfogadva3ms2980 KiB
11Elfogadva3ms3084 KiB
12Elfogadva3ms3196 KiB
13Elfogadva3ms3460 KiB
14Elfogadva3ms3352 KiB
15Elfogadva3ms3616 KiB
16Elfogadva3ms3484 KiB
17Elfogadva3ms3500 KiB
18Elfogadva3ms3496 KiB
19Elfogadva3ms3492 KiB
subtask30/10
20Hibás válasz4ms3852 KiB
21Hibás válasz3ms4060 KiB
22Hibás válasz3ms4276 KiB
23Elfogadva3ms4092 KiB
24Hibás válasz4ms4360 KiB
subtask40/15
25Hibás válasz3ms4364 KiB
26Hibás válasz4ms4208 KiB
27Hibás válasz4ms4488 KiB
28Hibás válasz3ms4556 KiB
29Hibás válasz4ms4564 KiB
30Elfogadva3ms4324 KiB
31Hibás válasz4ms4716 KiB
32Hibás válasz4ms4724 KiB
33Hibás válasz4ms4824 KiB
subtask50/20
34Elfogadva3ms4536 KiB
35Elfogadva3ms4528 KiB
36Hibás válasz4ms4804 KiB
37Hibás válasz4ms4812 KiB
38Hibás válasz4ms4808 KiB
39Hibás válasz4ms4804 KiB
40Hibás válasz4ms4812 KiB
41Hibás válasz4ms4812 KiB
42Hibás válasz4ms4936 KiB
subtask60/30
43Hibás válasz3ms4996 KiB
44Hibás válasz3ms4848 KiB
45Hibás válasz3ms4996 KiB
46Hibás válasz3ms4984 KiB
47Hibás válasz3ms5116 KiB
48Hibás válasz3ms5204 KiB
49Hibás válasz4ms5404 KiB
50Hibás válasz4ms5264 KiB
51Hibás válasz4ms5252 KiB
52Elfogadva3ms4964 KiB
53Hibás válasz4ms5076 KiB
54Hibás válasz4ms5224 KiB
55Hibás válasz3ms5212 KiB
56Hibás válasz3ms5352 KiB
57Hibás válasz3ms5360 KiB
58Hibás válasz4ms5396 KiB
59Hibás válasz4ms5244 KiB
60Hibás válasz4ms5352 KiB