Pagini recente » Cod sursa (job #350353) | Cod sursa (job #1902971) | Cod sursa (job #2285470) | Cod sursa (job #47007) | Cod sursa (job #3220658)
#include <bits/stdc++.h>
//#include "main.h"
using namespace std;
ifstream fin("sandokan.in");
ofstream fout("sandokan.out");
const int mod = 2000003;
int n, k, p, fact[5002];
static inline void PrecalcFact(int n) {
fact[0] = fact[1] = 1;
for(int i = 1; i <= n; i++) fact[i] = 1LL * (fact[i - 1] * i) % mod;
}
static inline int Put(int a, int n) {
int p = 1;
while(n) {
if(n & 1) p = 1LL * (1LL * p * a) % mod;
a = 1LL * (1LL * a * a) % mod;
n >>= 1;
}
return p;
}
static inline int Inv(int a) {
return Put(a, mod - 2);
}
static inline int Comb(int n, int k) {
if(n < k) return 0;
return (1LL * (fact[n] * Inv(fact[n - k] * fact[k] % mod)) % mod);
}
int main() {
PrecalcFact(5000);
fin >> n >> k;
p = (n - 1) % (k - 1) + 1;
fout << Comb(n - 1, p - 1);
return 0;
}