Pagini recente » Cod sursa (job #8707) | Cod sursa (job #3037788) | Cod sursa (job #3209307) | Cod sursa (job #1719836) | Cod sursa (job #25678)
Cod sursa(job #25678)
#include <stdio.h>
#define MAXN 5128
#define MOD 666013
int N, K, R[MAXN], mod[MAXN];
int I, J, P, res;
void solve(void)
{
int i;
for(mod[0] = 1, i = 1; i <= N; i++)
mod[i] = (int)((long long)(i*mod[i-1])%MOD);
for(i = 1; i <= N; i++)
R[i%K]++;
for(i = 0; i < K; i++)
if(R[i] > P)
P = R[i];
for(i = 0; i < K; i++)
if(R[i] == P)
I++;
else
J++;
res = mod[I];
for(i = 1; i <= I; i++)
res = (int)((long long)res*mod[P]%MOD);
res = (int)((long long)res*mod[J]%MOD);
for(i = 1; i <= J; i++)
res = (int)((long long)res*mod[P-1]%MOD);
}
void read_data(void)
{
scanf("%d %d\n", &N, &K);
}
void write_data(void)
{
printf("%d\n", res);
}
int main(void)
{
freopen("kperm.in", "rt", stdin);
freopen("kperm.out", "wt", stdout);
read_data();
if( ((K-1)*K/2) % K != 0 )
{
printf("0\n");
return 0;
}
solve();
write_data();
return 0;
}