Pagini recente » Cod sursa (job #668074) | Cod sursa (job #375511) | Cod sursa (job #2846524) | Cod sursa (job #1968769) | Cod sursa (job #1192201)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("sandokan.in");
ofstream g ("sandokan.out");
unsigned long long n, r, k, t, j, r1, r2, r3;
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=(i*j)%2000003;
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);
if(r+r>n-1)
{
r1 = prod(r,n-1);
r2 = prod(1,n-r-1);
}
else
{
r1 = prod(n-r-1,n-1);
r2 = prod(1,r);
}
while (r1%r2>0)
r1+=2000003;
// cout << r1/r2;
/*
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 << r1/r2;
return 0;
}