Pagini recente » Cod sursa (job #632504) | Cod sursa (job #1314772) | Cod sursa (job #2241731) | Cod sursa (job #2944643) | Cod sursa (job #1192091)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("sandokan.in");
ofstream g ("sandokan.out");
unsigned long long n, r, k, t, j;
unsigned long long prod(unsigned long long a, unsigned long long b)
{
unsigned long long i=1;
for(int j=a+1; j<=b; j++)
i*=j;
return i;
}
int cmmdc(int a, int b)
{
if (a%b==0)
return b;
else
return cmmdc(b,a%b);
}
int a[5100],i,limj,lims;
int main()
{
f >> n >> k;
r=(n-1)%(k-1);
for (i=1;i<=n-1;i++)
a[i] = i;
if(r+r>n-1)
{
for (int i=1;i<=r;i++)
a[i]=1;
limj = n-r-1;
lims = r+1;
}
else
{
for (int i=1;i<=n-1-r;i++)
a[i]=1;
limj = r;
lims = n-r;
}
for (j=limj;j>=2;j--)
{
int tt = j;
for (int k=n-1;k>=lims;k--)
{
int c = cmmdc(tt,a[k]);
tt /=c;
a[k]/=c;
if (tt==1)
break;
}
}
t = 1;
for (i=lims;i<=n-1;i++)
t = (t*a[i])%2000003;
g << t;
return 0;
}