Cod sursa(job #761637)

Utilizator SteveStefan Eniceicu Steve Data 26 iunie 2012 21:15:30
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>

using namespace std;

long long N, K;

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

int main ()
{
    Citire ();
    ofstream fout ("kperm.out");
    if (K % 2 == 0)
    {
        fout << "0";
        fout.close ();
        return 0;
    }
    long long lol1 = 1, lol2 = 1;
    long long c = N / K;
    long long r = N % K;
    for (long long i = 2; i <= r; i++)
    {
        lol1 = (lol1 * i) % 666013;
    }
    for (long long i = 2; i <= K - r; i++)
    {
        lol2 = (lol2 * i) % 666013;
    }
    long long alfa = 1, alfa2;
    for (long long i = 2; i <= c; i++)
    {
        alfa = (alfa * i) % 666013;
    }
    long long q = 1, w;
    alfa2 = (alfa * (c + 1)) % 666013;
    w = 1;
    for (long long i = 1; i <= K - r; i++)
    {
        q = (q * alfa) % 666013;
    }
    for (long long i = 1; i <= r; i++)
    {
        w = (w * alfa2) % 666013;
    }
    w = (w * q) % 666013;
    w = (lol1 * w) % 666013;
    w = (lol2 * w) % 666013;
    fout << w;
    fout.close ();
    return 0;
}