Pagini recente » Cod sursa (job #1763394) | Cod sursa (job #27538) | Cod sursa (job #1301030) | Cod sursa (job #1037774) | Cod sursa (job #885298)
Cod sursa(job #885298)
#include<stdio.h>
#define maxdim 5005
#define mod 666013
FILE*f=fopen("kperm.in","r");
FILE*g=fopen("kperm.out","w");
int n,k;
int fr[maxdim];
int main () {
fscanf(f,"%d %d",&n,&k);
if ( !(k&1) ){
fprintf(g,"0\n");
fclose(f); fclose(g);
return 0;
}
int rest = 0;
for ( int i = 1 ; i <= n ; ++i ){
++rest; if ( rest == k ) rest = 0;
++fr[rest];
}
int maxfr = 0,nr = 0;
for ( int i = 0 ; i < k ; ++i ){
if ( fr[i] > maxfr ){
maxfr = fr[i]; nr = 1;
}
else{
if ( fr[i] == maxfr ) ++nr;
}
}
int sol = 1;
for ( int i = 1 ; i <= nr ; ++i ){
sol = (1LL*sol*i)%mod;
}
int maxfrfact = 1;
for ( int i = 1 ; i <= maxfr ; ++i ){
maxfrfact = (1LL*maxfrfact*i)%mod;
}
for ( int i = 1 ; i <= nr ; ++i ){
sol = (1LL*sol*maxfrfact)%mod;
}
for ( int i = 1 ; i <= k-nr ; ++i ){
sol = (1LL*sol*i)%mod;
}
maxfrfact = 1;
for ( int i = 1 ; i < maxfr ; ++i ){
maxfrfact = (1LL*maxfrfact*i)%mod;
}
for ( int i = 1 ; i <= k-nr ; ++i ){
sol = (1LL*sol*maxfrfact)%mod;
}
fprintf(g,"%d\n",sol);
fclose(f);
fclose(g);
return 0;
}