Cod sursa(job #761611)

Utilizator SteveStefan Eniceicu Steve Data 26 iunie 2012 19:51:04
Problema Kperm Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

int N, K;

void Citire () {
    ifstream fin ("kperm.in");
    fin >> N >> K;
    fin.close ();
}

void Business ()
{
    int dif = N - K, u = N - (dif << 1);
    int lol = 1, i;
    for (i = 2; i <= u && i <= dif; i++)
    {
        lol = ((lol * i) % 666013 * i) % 666013;
    }
    for (; i <= u || i <= dif; i++)
    {
        lol = (lol * i) % 666013;
    }
    while (dif >= 32)
    {
        lol = (lol << 5) % 666013;
        dif -= 32;
    }
    while (dif >= 8)
    {
        lol = (lol << 3) % 666013;
        dif -= 8;
    }
    while (dif--)
    {
        lol = (lol << 1) % 666013;
    }
    ofstream fout ("kperm.out");
    if (K % 2 == 0)
    {
        fout << "0";
        fout.close ();
    }
    else
    {
        fout << lol;
        fout.close ();
    }
}

int main ()
{
    Citire ();
    Business ();
    return 0;
}