Pagini recente » Borderou de evaluare (job #403669) | Cod sursa (job #986208) | Cod sursa (job #1516777) | Cod sursa (job #640863) | Cod sursa (job #1615434)
#include <fstream>
using namespace std;
ifstream in("sandokan.in");
ofstream out("sandokan.out");
const int MOD = 2000003;
int intExp(int b, int e) {
if(e == 0) return 1;
int half = intExp(b, e >> 1);
if(e & 1) return 1LL * half * half % MOD * b % MOD;
return 1LL * half * half % MOD;
}
int modInv(int x) {
return intExp(x, MOD - 2);
}
int getComb(int n, int k) {
int ans, i;
ans = 1;
for(i = 1; i <= k; i++) {
ans = 1LL * ans * (n - i + 1) % MOD * modInv(i) % MOD;
}
return ans;
}
int main() {
int n, k, sol;
in >> n >> k;
sol = getComb(n - 1, (n - 1) % (k - 1));
out << sol << '\n';
return 0;
}