Pagini recente » Cod sursa (job #958200) | Cod sursa (job #2104462) | Cod sursa (job #601028) | Cod sursa (job #351885) | Cod sursa (job #32819)
Cod sursa(job #32819)
#include <cstdio>
using namespace std;
const char iname[] = "kperm.in";
const char oname[] = "kperm.out";
typedef long long i64;
#define MAX_N 5007
#define modulo 666013
i64 N, K;
i64 F[MAX_N];
/* Perm(N%K) * Perm(K - N%K) * [Perm(N/K)]^(K-N%K) * [Perm(N/K +1)] ^(N%K) */
int main(void)
{
freopen(iname, "r", stdin);
i64 i;
i64 sum;
i64 Res;
scanf("%lld %lld", & N, & K);
for (i = F[0] = 1; i <= N; ++ i)
F[i] = (F[i - 1] * i) % modulo;
sum = 1;
for (i = 1; i <= K - N % K; ++ i)
sum = (sum * F[N / K]) % modulo;
Res = sum;
sum = 1;
for (i = 1; i <= N % K; ++ i)
sum = (sum * F[N/K + 1]) % modulo;
Res = (Res * sum) % modulo;
Res = (Res * F[N % K]) % modulo;
Res = (Res * F[K - N % K]) % modulo;
freopen(oname, "w", stdout);
if (K & 1)
printf("%lld\n", Res);
else
printf("0\n");
return 0;
}