Cod sursa(job #2098092)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 2 ianuarie 2018 13:13:06
Problema Sandokan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <iostream>
#define MOD 2000003
using namespace std;
long long putere (long long x,int p){
    long long r=1;
    while (p){
        if (p%2)
            r=(r*x)%MOD;
        x=(x*x)%MOD;
        p/=2;
    }
    return r;
}
int main()
{
    FILE *fin=fopen ("sandokan.in","r");
    FILE *fout=fopen ("sandokan.out","w");
    int n,k,maxi,i,x;
    long long sol,fact;
    fscanf (fin,"%d%d",&n,&k);
    maxi=0;
    for (i=1;i<=k;i++){
        fscanf (fin,"%d",&x);
        maxi=max(maxi,x);
    }
    // combinari de maxi-k+1 luate cate n-k
    sol=1;
    for (i=1;i<=maxi-k+1;i++)
        sol=(sol*i)%MOD;
    fact=1;
    for (i=1;i<=n-k;i++)
        fact=(fact*i)%MOD;
    sol=(sol*putere (fact, MOD-2))%MOD;
    fact=1;
    for (i=1;i<=maxi-n+1;i++)
        fact=(fact*i)%MOD;
    sol=(sol*putere (fact, MOD-2))%MOD;
    fprintf (fout,"%lld",sol);
    return 0;
}