Pagini recente » Monitorul de evaluare | Cod sursa (job #2979583) | Borderou de evaluare (job #750524) | Borderou de evaluare (job #750510) | Cod sursa (job #3328645)
#include <fstream>
using namespace std;
int fact[5001];
int r(int a, int b) {
int x = 1;
while(b > 0) {
if(b % 2 == 1) {
b--;
x = (1LL * x * a) % 2000003;
}
else {
b /= 2;
a = (1LL * a * a) % 2000003;
}
}
return x;
}
int main()
{
ifstream cin ("sandokan.in");
ofstream cout ("sandokan.out");
int n, k, i;
long long x;
cin >> n >> k;
for(i = 1; i <= n; i++) {
cin >> x;
}
n--;
k--;
for(i = 1; i * k <= n; i++) {
}
i--;
k *= i;
fact[0] = 1;
for(i = 1; i <= n; i++) {
fact[i] = (1LL * fact[i - 1] * i) % 2000003;
}
cout << (1LL * fact[n] * r((1LL * fact[n - k] * fact[k]) % 2000003, 2000001)) % 2000003;
return 0;
}