Cod sursa(job #1483928)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 10 septembrie 2015 10:28:04
Problema Kperm Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<stdio.h>
#define lul unsigned long long
#define N 666013
lul n,k,f[4999],r,c,m,i;
lul P(lul x,lul n) {
    lul y;
    for(y=1;n;n>>=1,x=(x*x)%N)
    if(n%2)
        y=(y*x)%N;
    return y;
}
int main() {
    freopen("kperm.in","r",stdin),freopen("kperm.out","w",stdout),scanf("%llu%llu",&n,&k);
    if(k%2==0)
        printf("0");
    else {
        c=n/k,r=n%k,f[0]=1,m=r;
        if(k-r>m)
            m=k-r;
        if(c+1>m)
            m=c+1;
        for(i=1;i<=m;i++)
            f[i]=(i*f[i-1])%N;
        printf("%llu",(((f[r]*f[k-r])%N)*((P(f[c],k-r)*P(f[c+1],r))%N))%N);
    }
}