Pagini recente » Cod sursa (job #552377) | Cod sursa (job #1411706) | Cod sursa (job #3286188) | Cod sursa (job #1956539) | Cod sursa (job #3152005)
#include <fstream>
#define MOD 2000003
#define int long long
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]);
}
signed 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;
for(int i = 1; i <= n; ++i) {
int x; cin >> x;
}
int ramase = n;
while(ramase >= k) ramase -= k - 1;
cout << combinari(n - 1, ramase - 1);
return 0;
}