49872023-04-08 15:39:24TomaSajtHázszámokcpp17Hibás válasz 25/1004ms5348 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 = [&](int 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
1Elfogadva3ms1816 KiB
2Elfogadva3ms2172 KiB
3Hibás válasz4ms2476 KiB
subtask225/25
4Elfogadva3ms2448 KiB
5Elfogadva3ms2664 KiB
6Elfogadva3ms2880 KiB
7Elfogadva3ms3108 KiB
8Elfogadva3ms3200 KiB
9Elfogadva3ms3456 KiB
10Elfogadva3ms3500 KiB
11Elfogadva3ms3736 KiB
12Elfogadva3ms3680 KiB
13Elfogadva3ms4076 KiB
14Elfogadva3ms4060 KiB
15Elfogadva3ms4276 KiB
16Elfogadva3ms4332 KiB
17Elfogadva3ms4348 KiB
18Elfogadva3ms4408 KiB
19Elfogadva3ms4500 KiB
subtask30/10
20Hibás válasz3ms4736 KiB
21Hibás válasz3ms4736 KiB
22Hibás válasz3ms4740 KiB
23Elfogadva3ms4380 KiB
24Hibás válasz3ms4644 KiB
subtask40/15
25Hibás válasz4ms4696 KiB
26Hibás válasz3ms4648 KiB
27Hibás válasz4ms4928 KiB
28Hibás válasz3ms4912 KiB
29Hibás válasz3ms5084 KiB
30Elfogadva3ms4844 KiB
31Hibás válasz4ms5124 KiB
32Hibás válasz4ms5176 KiB
33Hibás válasz4ms5112 KiB
subtask50/20
34Elfogadva3ms4916 KiB
35Elfogadva3ms4920 KiB
36Hibás válasz4ms5260 KiB
37Hibás válasz4ms5112 KiB
38Hibás válasz4ms5112 KiB
39Hibás válasz4ms5332 KiB
40Hibás válasz4ms5200 KiB
41Hibás válasz4ms5108 KiB
42Hibás válasz4ms5108 KiB
subtask60/30
43Hibás válasz3ms5092 KiB
44Hibás válasz3ms5036 KiB
45Hibás válasz3ms5092 KiB
46Hibás válasz3ms5188 KiB
47Hibás válasz4ms5216 KiB
48Hibás válasz4ms5332 KiB
49Hibás válasz4ms5348 KiB
50Hibás válasz4ms5176 KiB
51Hibás válasz4ms5184 KiB
52Elfogadva3ms4904 KiB
53Hibás válasz3ms5008 KiB
54Hibás válasz4ms5160 KiB
55Hibás válasz3ms5144 KiB
56Hibás válasz4ms5152 KiB
57Hibás válasz4ms5156 KiB
58Hibás válasz4ms5328 KiB
59Hibás válasz4ms5264 KiB
60Hibás válasz4ms5328 KiB