Pagini recente » Cod sursa (job #2592766) | Cod sursa (job #364099) | Cod sursa (job #2303853) | Cod sursa (job #1288366) | Cod sursa (job #490664)
Cod sursa(job #490664)
#include <stdio.h>
#include <assert.h>
#define MOD 666013
#define maxM 5010
int Perm[maxM];
int log_pow (int A, int N) {
if (N == 0) return 1;
if (N == 1) return A;
int x = log_pow(A, N / 2);
x = (1LL * x * x) % MOD;
if (N % 2 == 1)
return (1LL * x * A) % MOD;
return x;
}
int main () {
int N, K, i, P, rest, A, B;
freopen("kperm.in", "r", stdin);
freopen("kperm.out", "w", stdout);
scanf("%d%d", &N, &K);
if (K % 2 == 0) {
printf("%d\n", 0);
return 0;
}
P = N / K;
rest = N - P * K;
for (i = 1, Perm[0] = 1; i <= K; ++ i)
Perm[i] = (1LL * Perm[i - 1] * i) % MOD;
A = (1LL * log_pow(Perm[P + 1], rest) * Perm[rest]) % MOD;
B = (1LL * log_pow(Perm[P], K - rest) * Perm[K - rest]) % MOD;
assert(A);
assert(B);
fprintf(stderr, "%d %d\n", A, B);
printf("%d\n", (int) ((1LL * A * B) % MOD));
return 0;
}