Cod sursa(job #961076)

Utilizator primulDarie Sergiu primul Data 11 iunie 2013 16:52:28
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
 
#define mod 666013
 
int n;
long long k;
long long rez = 1;
 
void readdata()
{
    freopen("kperm.in", "r", stdin);
    freopen("kperm.out", "w", stdout);
     
    scanf("%d %lld", &n, &k);
}
 
void solve()
{
    long long v1, v2, val, aux;
    int i;
     
    v1 = n%k;
    v2 = k - n%k;
     
    for (i = 1; i <= v1; ++i)
        rez = (rez * (long long)i) % mod;
    for (i = 1; i <= v2; ++i)
        rez = (rez * (long long)i) % mod;
     
    val = 1;
    for (i = 1; i <= n/k+1; ++i)
        val = (val * (long long)i) % mod;
    aux = 1;
    for (i = 1; i <= v1; ++i)
        aux = (aux * val) % mod;
    rez = (rez * aux) % mod;
     
    val = 1;
    for (i = 1; i <= n/k; ++i)
        val = (val * (long long)i) % mod;
    aux = 1;
    for (i = 1; i <= v2; ++i)
        aux = (aux * val) % mod;
    rez = (rez * aux) % mod;   
}
 
void writedata()
{
    if (k % 2 == 0) printf("0\n");
    else printf("%lld\n", rez);
}
 
int main()
{
    readdata();
    solve();
    writedata();
    return 0;
}