159182025-03-20 11:57:3642Toronyépítés (1,1,3,3)cpp17Elfogadva 50/501ms532 KiB
#include <iostream>
#include <unordered_map>
using namespace std;

unordered_map<int, int> memo = {
    {0, 1}, {1, 2}, {2, 4}, {3, 10}, {4, 24}, {5, 56}
};
const int MOD = 20210108;

int t(int n) {
    if (memo.find(n) != memo.end()) {
        return memo[n];
    }
    int cur;
    if (n % 2 == 0) {
        cur = (1LL * t(n / 2 - 1) * t(n / 2 + 1) + 2LL * (1LL * t(n / 2 - 3) * t(n / 2) + 1LL * t(n / 2 - 2) * t(n / 2 - 1))) % MOD;
    } else {
        cur = (1LL * t(n / 2) * t(n / 2 + 1) + 2LL * (1LL * t(n / 2 - 2) * t(n / 2) + 1LL * t(n / 2 - 1) * t(n / 2 - 1))) % MOD;
    }
    memo[n] = cur;
    return cur;
}

int main() {
    int n;
    cin >> n;
    cout << t(n) << "\n";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva4/41ms316 KiB
6Elfogadva4/41ms316 KiB
7Elfogadva4/41ms316 KiB
8Elfogadva4/41ms316 KiB
9Elfogadva4/41ms532 KiB
10Elfogadva4/41ms316 KiB
11Elfogadva4/41ms316 KiB
12Elfogadva4/41ms316 KiB
13Elfogadva4/41ms320 KiB
14Elfogadva4/41ms508 KiB
15Elfogadva2/21ms400 KiB
16Elfogadva2/21ms508 KiB