Cod sursa(job #2774966)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 septembrie 2021 18:35:15
Problema Kperm Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.63 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);
    }
    return 0;
}