20862022-12-16 22:28:45TomaSajtHázszámokcpp17Hibás válasz 0/1003ms4952 KiB
// ez valami régi kód, nem tudom, működik-e
#include <bits/stdc++.h>
using namespace std;
#define speed ios::sync_with_stdio(0);cin.tie(0)

int k;
vector<int> budget;
vector<int> digits;
map<int, long long> mem;
long long pn(int e) {
    if (mem[e]) return mem[e];
    long long h = pn(e / 2);
    return mem[e] = (e % 2 == 0 ? h * h : h * h * k);
}

long long f(int d) {
    return (d + 1) * pn(d);
}
long long g(int d) {
    if (d == 0) return 0;
    return (k - 1) * f(d - 1) + g(d - 1);
}

int calcDig(int i) {
    int a = f(i - 1);
    for (int j = 1; j < k; j++) {
        for (int l = 0; l < k; l++) {
            budget[l] -= a;
        }
        bool o = false;
        for (int l = 0; l < k; l++) {
            if (budget[l] < 0) {
                o = true;
                break;
            }
        }
        if (!o) continue;
        for (int l = 0; l < k; l++) {
            budget[l] += a;
        }
        return j - 1;
    }
    return k - 1;
}
int main() {
    speed;
    mem[0] = 1;
    cin >> k;
    budget.resize(k);
    for (int& a : budget)
        cin >> a;
    int dig;
    for (int i = 0;; i++) {
        for (int j = 0; j < k; j++) {
            int c = j == 0 ? g(i) : f(i);
            if (budget[j] < c) {
                dig = i;
                goto after;
            }
        }
    }
after:
    digits.resize(dig + 1);
    for (int i = dig; i >= 0; i--) {
        digits[i] = calcDig(i);
    }
    int res = 0;
    for (int i = dig; i >= 0; i--) {
        res *= k;
        res += digits[i];
    }
    cout << res - 1 << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1760 KiB
2Elfogadva2ms1932 KiB
3Hibás válasz2ms2132 KiB
subtask20/25
4Hibás válasz2ms2336 KiB
5Hibás válasz2ms2540 KiB
6Hibás válasz2ms2740 KiB
7Hibás válasz2ms2948 KiB
8Hibás válasz2ms3024 KiB
9Elfogadva2ms3152 KiB
10Hibás válasz2ms3232 KiB
11Hibás válasz2ms3360 KiB
12Hibás válasz2ms3436 KiB
13Hibás válasz2ms3428 KiB
14Hibás válasz2ms3436 KiB
15Hibás válasz2ms3432 KiB
16Hibás válasz2ms3432 KiB
17Hibás válasz2ms3556 KiB
18Hibás válasz2ms3912 KiB
19Hibás válasz2ms3652 KiB
subtask30/10
20Hibás válasz2ms3744 KiB
21Hibás válasz2ms3872 KiB
22Hibás válasz2ms3932 KiB
23Hibás válasz2ms3828 KiB
24Hibás válasz2ms3832 KiB
subtask40/15
25Hibás válasz2ms3832 KiB
26Hibás válasz2ms3832 KiB
27Hibás válasz2ms3832 KiB
28Hibás válasz2ms3832 KiB
29Hibás válasz2ms3828 KiB
30Hibás válasz2ms3836 KiB
31Hibás válasz2ms3960 KiB
32Hibás válasz2ms4032 KiB
33Hibás válasz2ms4040 KiB
subtask50/20
34Hibás válasz2ms4160 KiB
35Hibás válasz2ms4264 KiB
36Hibás válasz2ms4264 KiB
37Hibás válasz2ms4268 KiB
38Hibás válasz2ms4340 KiB
39Hibás válasz2ms4340 KiB
40Hibás válasz2ms4364 KiB
41Hibás válasz2ms4448 KiB
42Hibás válasz2ms4540 KiB
subtask60/30
43Hibás válasz2ms4444 KiB
44Hibás válasz2ms4672 KiB
45Hibás válasz2ms4772 KiB
46Hibás válasz2ms4772 KiB
47Hibás válasz2ms4748 KiB
48Hibás válasz2ms4748 KiB
49Hibás válasz2ms4848 KiB
50Hibás válasz2ms4648 KiB
51Hibás válasz2ms4792 KiB
52Hibás válasz2ms4904 KiB
53Hibás válasz2ms4900 KiB
54Hibás válasz2ms4900 KiB
55Hibás válasz2ms4900 KiB
56Hibás válasz2ms4792 KiB
57Hibás válasz2ms4792 KiB
58Hibás válasz2ms4952 KiB
59Hibás válasz2ms4808 KiB
60Hibás válasz2ms4812 KiB