Pagini recente » Cod sursa (job #2322920) | Cod sursa (job #1704875) | Cod sursa (job #2606049) | Istoria paginii runda/oji_2020_official/clasament | Cod sursa (job #25685)
Cod sursa(job #25685)
#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;
}