Cod sursa(job #386690)

Utilizator DraStiKDragos Oprica DraStiK Data 25 ianuarie 2010 18:34:41
Problema Kperm Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <algorithm>
using namespace std;

#define MOD 666013
#define DIM 5005

int n,k,c,r,nrt;
int fact[DIM];

int lgput (int n,int p)
{
    int rez;

    for (rez=1; p; p>>=1)
    {
        if (p&1)
            rez=(rez*n)%MOD;
        n=(n*n)%MOD;
    }

    return rez;
}

void solve ()
{
    int i;

    fact[0]=1;
    for (i=1; i<=n; ++i)
        fact[i]=(fact[i-1]*i)%MOD;
    c=n/k; r=n%k;
    nrt=(fact[r]*fact[k-r])%MOD;
    nrt=(nrt*lgput (fact[c+1],r))%MOD;
    nrt=(nrt*lgput (fact[c],k-r))%MOD;
    printf ("%d",nrt);
}

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

    scanf ("%d%d",&n,&k);
    if (k&1)
        solve ();
    else
        printf ("0");

    return 0;
}