Pagini recente » Cod sursa (job #1834659) | Cod sursa (job #2186099) | Cod sursa (job #2042182) | Cod sursa (job #1209482) | Cod sursa (job #1415002)
#include <cstdio>
#define MOD 2000003
using namespace std;
bool pm[5010];
int prim[5010], exp[5010], k;
inline void ciur (int n)
{
for (int i = 2; i <= n; ++i)
if (!pm[i])
{
prim[++k] = i;
for (int j = i * i; j <= n; j += i)
pm[j] = true;
}
}
int main ()
{
freopen ("sandokan.in", "r", stdin);
freopen ("sandokan.out", "w", stdout);
int n, p;
scanf ("%d %d", &n, &p);
--n;
--p;
ciur (n);
for (int i = 1; i <= k; ++i)
{
for (int h = prim[i]; h <= n; h *= prim[i])
exp[i] += n / h;
}
for (int i = 1; prim[i] <= p && i <= k; ++i)
{
for (int h = prim[i]; h <= p; h *= prim[i])
exp[i] -= p / h;
}
for (int i = 1; prim[i] <= n - p && i <= k; ++i)
{
for (int h = prim[i]; h <= n - p; h *= prim[i])
exp[i] -= (n - p) / h;
}
long long rez = 1LL;
for (int i = 1; i <= k; ++i)
for (int j = 1; j <= exp[i]; ++j)
{
rez *= 1LL * prim[i];
rez %= MOD;
}
printf ("%lld\n", rez);
return 0;
}