Cod sursa(job #1812294)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 21 noiembrie 2016 22:40:16
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

const int Mod = 666013;

int nr1, nr2, cnt1, cnt2, i, n, k;
long long ans1, ans2, fact[5005];

long long power(long long a, int b)
{
    if(!b) return 1;
    if(b&1) return a * power(a*a%Mod, b>>1) % Mod;
    return power(a*a%Mod, b>>1);
}

int main()
{
    freopen("kperm.in", "r", stdin);
    freopen("kperm.out", "w", stdout);

    scanf("%d%d", &n, &k);

    if(k%2==0)
    {
        printf("0\n");
        return 0;
    }

    nr1 = n%k;
    nr2 = k-nr1;
    cnt1 = n/k+1;
    cnt2 = n/k;

    fact[0] = 1;
    for(i=1; i<=n; ++i)
        fact[i] = fact[i-1]*i%Mod;

    ans1 = fact[nr1] * power(fact[cnt1], nr1) % Mod;
    ans2 = fact[nr2] * power(fact[cnt2], nr2) % Mod;

    printf("%lld\n", ans1 * ans2 % Mod);

    return 0;
}