Cod sursa(job #2573504)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 5 martie 2020 17:54:40
Problema Sandokan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#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;
}