22062023-01-02 22:16:51TuruTamasJardaTcpp11Hibás válasz 6/403ms3916 KiB
#include <iostream>

using namespace std;

inline bool valid(int a, int b) {
    switch (a) {
    case 0:
        if (b == 0 || b == 2 || b== 4 || b == 5 || b == 10) {
            return true;
        }
        else {
            return false;
        }
    break;
    case 1:
        if (b == 1 || b == 8 || b == 7) {
            return true;
        }
        else {
            return false;
        }
    break;
    case 2:
        if (b == 3 || b == 4 || b == 6) {
            return true;
        }
        else {
            return false;
        }
    break;
    case 3:
        if (b == 8) {
            return true;
        }
        else {
            return false;
        }
    break;
    case 4:
        if (b == 4) {
            return true;
        }
    }
}

void recurse(unsigned long long int p, int loc, int N, int* r, int * cache) {
    if (loc == N) {
        (*r) += p;
        (*r) = (*r) % 20200111;
        return;
    }
    if (cache[N - loc] != -1) {
        (*r) += p * cache[N - loc];
        (*r) = (*r) % 20200111;
        return;
    }
    for (int i = 1; i <= N - loc; i++) {
        unsigned long long int p2;
        if (i == 1) {
            p2 = 1;
        }
        else if (i == 2) {
            p2 = 1;
        }
        else if (i == 3) {
            p2 = 2;
        }
        else if (i == 4) {
            p2 = 2;
        }
        else if (i >= 5) {
            p2 = (i - 5) + 4;
        }
        recurse(p * p2, loc + i, N, r, cache);
    }
}

int main()
{
    int N; cin >> N;
    int * cache = new int[N + 1];
    fill(cache, cache + N + 1, -1);
    for (int i = 1; i < N + 1; i++) {
        int r = 0;
        recurse(1, 0, i, &r, cache);
        cache[i] = r;
    }
    cout << cache[N];
    return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/40
1Elfogadva0/03ms1872 KiB
2Hibás válasz0/02ms2124 KiB
3Elfogadva1/12ms2328 KiB
4Elfogadva1/12ms2536 KiB
5Elfogadva2/22ms2736 KiB
6Elfogadva2/22ms2940 KiB
7Hibás válasz0/32ms3084 KiB
8Hibás válasz0/32ms3192 KiB
9Hibás válasz0/32ms3420 KiB
10Hibás válasz0/32ms3520 KiB
11Hibás válasz0/32ms3596 KiB
12Hibás válasz0/32ms3596 KiB
13Hibás válasz0/32ms3472 KiB
14Hibás válasz0/32ms3596 KiB
15Hibás válasz0/32ms3672 KiB
16Hibás válasz0/32ms3668 KiB
17Hibás válasz0/42ms3916 KiB