Pagini recente » Cod sursa (job #883823) | Cod sursa (job #2467086) | Cod sursa (job #307449) | Cod sursa (job #617996) | Cod sursa (job #3151989)
#include <fstream>
#define MOD 200003
using namespace std;
ifstream cin("sandokan.in");
ofstream cout("sandokan.out");
int fact[5001];
void euclid(int a, int b, int & x, int & y)
{
if(b == 0) {x = 1, y = 1; return;}
int X, Y;
euclid(b, a % b, X, Y);
x = Y;
y = X - a / b * Y;
}
int impartire(int a, int b)
{
int invers, aux;
euclid(b, MOD, invers, aux);
while(invers < 0) invers += MOD;
return 1ll * a * invers % MOD;
}
int combinari(int n, int k)
{
return impartire(impartire(fact[n], fact[k]), fact[n - k]);
}
int main()
{
fact[0] = fact[1] = 1;
for(int i = 2; i <= 5000; ++i) fact[i] = (1ll * i * fact[i - 1]) % MOD;
int n, k; cin >> n >> k;
int rez = 1;
while(n >= k) {
rez *= combinari(n, k);
n -= k - 1;
}
cout << rez;
return 0;
}