Cod sursa(job #1957614)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 7 aprilie 2017 17:36:32
Problema Sandokan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<bits/stdc++.h>
#define MOD 2000003
using namespace std;
long long n,k,sol;
long long invmod(long long a,long long b)
{
    long long rez=1LL;
    long long ex=b-2LL;
    while(ex)
    {
        if(ex&1)
        {
            ex-=1LL;
            rez=(rez*a)%MOD;
        }
            else
        {
            ex>>=1LL;
            a=(a*a)%MOD;
        }
    }
    return rez;
}
long long C(long long n,long long k)
{
    long long nf=1LL,kf=1LL,xf=1LL;
    for(int i=1;i<=n;i++) nf=(nf*i)%MOD;
    for(int i=1;i<=k;i++) kf=(kf*i)%MOD;
    for(int i=1;i<=n-k;i++) xf=(xf*i)%MOD;
    long long comb=1LL;
    comb=(comb*nf)%MOD;
    comb=(comb*invmod(kf,MOD))%MOD;
    comb=(comb*invmod(xf,MOD))%MOD;
    return comb;
}
int main()
{
    freopen("sandokan.in","r",stdin);
    freopen("sandokan.out","w",stdout);
    scanf("%lld%lld",&n,&k);
    sol=1LL;
    while(n>=k)
    {
        sol=(sol*(C(n,k)))%MOD;
        n=n-k+1LL;
    }
    printf("%lld\n",sol);
    return 0;
}