Cod sursa(job #1391028)

Utilizator EpictetStamatin Cristian Epictet Data 17 martie 2015 16:06:53
Problema 12-Perm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
using namespace std;
ifstream fin ("12perm.in");
ofstream fout ("12perm.out");
const int MOD = (1 << 20);
int N, sol, X[50];
bool fr[50];

int modul(int x) {
    return (x < 0 ? -x : x);
}

void Afis()
{
    for (int i = 1; i <= N; i++) {
        fout << X[i] << ' ';
    }
    fout << '\n';
}

void Back(int k)
{
    if (k == N + 1)
    {
        //Afis();
        sol++;
    }
    else
    {
        for (int i = 1; i <= N; i++)
        {
            if (!fr[i] && modul(X[k-1] - i) < 3)
            {
                fr[i] = 1;
                X[k] = i;
                Back(k + 1);
                fr[i] = 0;
            }
        }
    }
}

int main()
{
    fin >> N;
    int a, b, c;
    a = 2;
    b = 6;
    c = 12;
    for (int i = 5; i <= N; i++)
    {
        a = (c + a + 2 * (i - 2)) % MOD;
        swap (a, c);
        swap (a, b);
    }

    fout << c << '\n';
    fout.close();
    return 0;
}