Pagini recente » Borderou de evaluare (job #3324770) | Cod sursa (job #3340456) | Cod sursa (job #1472743) | Cod sursa (job #3356788)
#include <fstream>
using namespace std;
ifstream fin ("sandokan.in");
ofstream fout ("sandokan.out");
const int MOD = 2e6 + 3;
int num_elemente, num_alese;
int power(int n, int x) {
if (x == 0) {
return 1LL;
}
else if (x % 2) {
return 1LL * n * power(n, x - 1) % MOD;
}
int p = power(n, x / 2);
return 1LL * p * p % MOD;
}
int invers(int n) {
return power(n, MOD - 2);
}
int aranjamente(int n, int k) {
long long rez = 1;
for (int i = n; i >= n - k + 1; i--) {
rez = rez * i % MOD;
}
return rez;
}
int combinari(int n, int k) {
return 1LL * aranjamente(n, k) * invers(aranjamente(k, k)) % MOD;
}
int main() {
fin >> num_elemente >> num_alese;
int p = (num_elemente - 1) % (num_alese - 1) + 1;
fout << combinari(num_elemente - 1, p - 1);
return 0;
}