Pagini recente » Cod sursa (job #2593972) | Cod sursa (job #824120) | Cod sursa (job #2760907) | Cod sursa (job #280604) | Cod sursa (job #3280410)
#include <iostream>
#include <fstream>
using namespace std;
int mod = 2000003;
ifstream in("sandokan.in");
ofstream out("sandokan.out");
long long Pow(long long baza, long long exp)
{
long long rez = 1;
while(exp > 0)
{
if(exp % 2 == 0)
{
baza *= baza;
baza %= mod;
exp /= 2;
}
else
{
rez *= baza;
rez %= mod;
exp--;
}
}
return rez;
}
long long Combinatie(long long n, long long k)
{
long long nFactorial = 1;
for(int i = 1; i <= n; i++)
nFactorial = (nFactorial * i) % mod;
long long kFactorial = 1;
for(int i = 1; i <= k; i++)
kFactorial = (kFactorial * i) % mod;
long long nkFactorial = 1;
for(int i = 1; i <= n-k; i++)
nkFactorial = (nkFactorial * i) % mod;
long long rez = (nFactorial * Pow(kFactorial, mod - 2) % mod) * Pow(nkFactorial, mod - 2) % mod;
return rez;
}
int main()
{
int nrEle;
in >> nrEle;
int nrEleOperatie;
in >> nrEleOperatie;
int lungimeFinala = nrEle % (nrEleOperatie - 1);
if(lungimeFinala == 0)
lungimeFinala = nrEleOperatie - 1;
long long rez = Combinatie(nrEle - 1, lungimeFinala - 1);
out << rez << '\n';
return 0;
}