Pagini recente » Cod sursa (job #1767038) | Cod sursa (job #966471) | Cod sursa (job #1026375) | Cod sursa (job #302647) | Cod sursa (job #516418)
Cod sursa(job #516418)
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<deque>
#include<queue>
#include<set>
#include<vector>
using namespace std;
const int INF = 1000000005;
const int NMAX = 5005;
const int KMAX = 5005;
const int MOD = 666013;
int N, K;
int fact[NMAX];
int apar[KMAX];
void factorial()
{
fact[0] = 1;
for(int i = 1 ; i <= N ; i++)
fact[i] = (i * fact[i - 1]) % MOD;
}
void numara_aparitii()
{
for(int i = 1 ; i <= N ; i++)
apar[i % K]++;
}
void scrie()
{
if(K % 2 == 0)
{
printf("0\n");
return;
}
long long REZ = fact[N%K]*fact[K - (N%K)]%MOD;
for(int i = 0 ; i < K ; i++)
REZ = (REZ * fact[apar[i]]) % MOD;
printf("%lld\n", REZ);
}
int main()
{
freopen("kperm.in", "r", stdin);
freopen("kperm.out", "w", stdout);
scanf("%d%d", &N, &K);
factorial();
numara_aparitii();
scrie();
return 0;
}