Pagini recente » Cod sursa (job #3000084) | Cod sursa (job #2984974) | Cod sursa (job #2971449) | Utilizatori inregistrati la PreOJI 2017 | Cod sursa (job #3281054)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("sandokan.in");
ofstream out("sandokan.out");
const int MOD = 2000003;
long long fact[5001];
void preCalcFact(int n)
{
fact[0] = 1;
fact[1] = 1;
for(int i = 2; i <= 5000; i++)
{
fact[i] = (fact[i - 1] * i) % MOD;
}
}
long long power(long long base, int exp)
{
long long p = 1;
while(exp > 0)
{
if(exp % 2 == 1)
{
p = (p * base) % MOD;
}
base = (base * base) % MOD;
exp /= 2;
}
return p;
}
long long C(int n, int k)
{
int numarator = fact[n];
int numitor = (fact[n - k] * fact[k]) % MOD;
return numarator * power(numitor, MOD - 2) % MOD;
}
int main()
{
int n, k, nr;
in >> n >> k;
preCalcFact(n);
for(int i = 1; i <= n; i++)
{
in >> nr;
}
out << C(n - 1, (n - 1) % (k - 1)) % MOD;
return 0;
}