Cod sursa(job #979134)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 31 iulie 2013 20:53:18
Problema 12-Perm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <cassert>

using namespace std;

const int MOD = (1 << 20) - 1;

int N, Solution;

void Solve() {
    int DP[4] = {1, 2, 6, 12};
    if (N <= 4) {
        Solution = DP[N - 1];
        return;
    }
    for (int n = 5; n <= N; ++n) {
        DP[0] = DP[1];
        DP[1] = DP[2];
        DP[2] = DP[3];
        DP[3] = (DP[2] + DP[0] + 2 * (n - 2)) & MOD;
    }
    Solution = DP[3];
}

void Read() {
    assert(freopen("12perm.in", "r", stdin));
    assert(scanf("%d", &N) == 1);
}

void Print() {
    assert(freopen("12perm.out", "w", stdout));
    printf("%d\n", Solution);
}

int main() {
    Read();
    Solve();
    Print();
    return 0;
}