Cod sursa(job #612143)

Utilizator crushackPopescu Silviu crushack Data 6 septembrie 2011 06:45:06
Problema Kperm Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#define NMax 5010

const char IN[]="kperm.in",OUT[]="kperm.out";
const int mod=666013;

int N,K;
int P[NMax];

int solve(int N,int K)
{
    if (K==1) return 1;
    if (N%K)
        return (N%K)*solve( N- (N/K + 1) , K-1);
    else
        return K*solve( N- N/K , K-1 );
}

void init(){
    P[0]=1;
    for (int i=1;i<=N;++i) P[i]=P[i-1]*i%mod;
}

int main()
{
    int i,c,d;
    freopen(IN,"r",stdin);
    scanf("%d%d",&N,&K);
    fclose(stdin);

    init();c= N/K+1; d= N%K ;
    int r= P[d];

    for (i=0;i<d;++i)
        r= (r*P[c])%mod;
    for (;i<K;++i)
        r= (r*P[c-1])%mod;

    freopen(OUT,"w",stdout);
    printf("%d\n",r);
    fclose(stdout);
    return 0;
}