Pagini recente » Cod sursa (job #519754) | Cod sursa (job #2209328) | Cod sursa (job #3306454) | Cod sursa (job #3307661) | Cod sursa (job #3306770)
#include <bits/stdc++.h>
#define MOD 2000003
using namespace std;
void euclid(int a, int b, int& x1, int& y1) ///invers modular
{
if(b==0)
{
x1=1;
y1=1;
}
else
{
int x2, y2;
euclid(b, a%b, x2, y2);
x1=y2;
y1=x2-a/b*y2;
}
}
int C(int a, int b) ///combinari de a luate cate b
{
if(a<b) return 0;
int C=1, fact=1; ///fact = b!
for(int i=1; i<=b; i++)
{
C=(long long)C*(a-i+1) %MOD;
fact=(long long)fact*i %MOD;
}
int invers_mod, y; ///invers_mod = inversul modular al lui b!
euclid(fact, MOD, invers_mod, y);
while(invers_mod<0) invers_mod+=MOD;
C=(long long)C*invers_mod %MOD;
return C;
}
int main()
{
ifstream in("sandokan.in");
ofstream out("sandokan.out");
int n, k;
in >> n >> k;
out << C(n-1, n%(k-1)-1);
return 0;
}