Pagini recente » Cod sursa (job #2573636) | Cod sursa (job #305915) | Cod sursa (job #2467167) | Cod sursa (job #2691181) | Cod sursa (job #518635)
Cod sursa(job #518635)
#include <iostream>
#include <cstdio>
using namespace std;
#define maxn 5010
#define mod 666013
#define LL long long
int N, K;
LL sol = 1;
LL fact[maxn];
int main() {
FILE *f1=fopen("kperm.in", "r"), *f2=fopen("kperm.out", "w");
fscanf(f1, "%d %d\n", &N, &K);
fact[0] = 1;
for(int i=1; i<=N; i++) {
fact[i] = ((LL)fact[i-1] * i) % mod;
}
if(K % 2 == 0) {
fprintf(f2, "0\n");
return 0;
}
if(N % K) {
int poz = N % K;
int ap = N / K + 1;
for(int i=poz; i>=1; i--) {
sol = (LL)sol * i; sol %= mod;
sol = (LL)sol * ap; sol %= mod;
sol = (LL)sol * fact[ap - 1]; sol %= mod;
}
ap --;
for(int i=K - poz; i>=1; i--) {
sol = (LL)sol * i; sol %= mod;
sol = (LL) sol * ap; sol %= mod;
sol = (LL)sol * fact[ap - 1]; sol %= mod;
}
}
else {
int ap = N / K;
for(int i=K; i>=1; i--) {
sol = (LL)sol * i; sol %= mod;
sol = (LL) sol * ap; sol %= mod;
sol = (LL)sol * fact[ap - 1]; sol %= mod;
}
}
fprintf(f2, "%lld\n", sol);
fclose(f1); fclose(f2);
return 0;
}