Pagini recente » Cod sursa (job #574662) | Cod sursa (job #2120263) | Cod sursa (job #1720211) | Cod sursa (job #2097573) | Cod sursa (job #2277276)
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
const int MOD = 666013;
ifstream fin("kperm.in");
ofstream fout("kperm.out");
int mypow(int x, int power) {
int ret = 1;
for (int i = 0; i < power; ++i) {
ret = (1LL * ret * x) % MOD;
}
return ret;
}
int main() {
int n, k; fin >> n >> k;
if (k % 2 == 0) {
fout << 0; fout.flush();
exit(0);
}
vector < int > fact(n + 1);
fact[0] = 1;
for (int i = 1; i <= n; ++i) {
fact[i] = (1LL * i * fact[i - 1]) % MOD;
}
int r = n % k;
int c = k - r;
int ans = (1LL * fact[r] * fact[c]) % MOD;
ans = (1LL * ans * mypow(fact[(n + k - 1) / k], r) * mypow(fact[n / k], c)) % MOD;
fout << ans;
return 0;
}