Pagini recente » Cod sursa (job #2701895) | Cod sursa (job #1083419) | Cod sursa (job #1533499) | Cod sursa (job #2871540) | Cod sursa (job #2573504)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("sandokan.in");
ofstream g("sandokan.out");
const int MOD=2000003;
int x,n,k,comb=0;
long long baza1=1,baza2=1,sus=1,t,pp;
void exp(long long int nr,long long int ad,long long int x)
{
if(nr!=MOD-2)
{
if(nr+ad<=MOD-2)
{
t=(t*x)%MOD;
x=(x*x)%MOD;
nr+=ad;
ad*=2;
exp(nr,ad,x);
}
else exp(nr,1,pp);
}
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)
f>>x;
for(int i=k+1;i<=n;i++)
if(comb!=k-2) comb++;
else comb=0;
for(int i=1;i<=n-1;i++)
sus=(sus*i)%MOD;
for(int i=1;i<=comb;i++)
baza1=(baza1*i)%MOD;
for(int i=1;i<=n-1-comb;i++)
baza2=(baza2*i)%MOD;
t=baza1;
pp=baza1;
exp(1,1,pp);
baza1=t;
t=baza2;
pp=baza2;
exp(1,1,pp);
baza2=t;
g<<1LL*(sus*baza1*baza2)%MOD;
}