Cod sursa(job #1746727)

Utilizator ade_tomiEnache Adelina ade_tomi Data 23 august 2016 20:03:00
Problema Kperm Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
long long fact (long long  k)
{
    long long  sol = 1;
    for (int i = 1; i <= k; i++)
        sol = (sol * i) % mod;
    return sol;
}


long long put (long long baza, long long  exp)
{
    long long  sol = 1;
    for (int i = 1; i <= exp; i++)
        sol = (sol * baza) % mod;
    return sol;
}
long long  n, k ;
int main()
{
    ifstream cin ("kperm.in");
    ofstream cout ("kperm.out");
    cin >> n >> k;
    long long r = n % k;
    long long  c = n / k;
    if (k % 2 == 0)
    {
        cout << "0";
        return 0;
    }
    if (2 * k <= n)
    {
        cout << "0";
        return 0;
    }
    long long   rez = fact (r);
    rez = (rez * fact(k - r)) % mod;
    int debug = 0;
    if (debug)
    {
        cout << rez << " ";

    }
    long long b1 = fact(c + 1);
    rez = (rez * put(b1, r)) % mod;
    if (debug)
    {
        cout << b1 << " ";
    }
    long long b2 = fact(c);
    rez = (rez * put(b2, k - r)) % mod;
    cout << rez;
    return 0;

}