Pagini recente » Cod sursa (job #1911434) | Cod sursa (job #2922704) | Cod sursa (job #1262451) | Cod sursa (job #1030986) | Cod sursa (job #518632)
Cod sursa(job #518632)
#include <iostream>
#include <cstdio>
using namespace std;
#define maxn 5010
#define mod 666013
#define LL long long
int N, K;
LL sol = 1;
int 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] = (fact[i-1] * i) % mod;
}
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;
}