Cod sursa(job #2146538)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 28 februarie 2018 00:54:18
Problema Sandokan Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

#define MaxN 5005
#define INF 2140000000
#define MOD 2000003
using namespace std;

FILE *IN=fopen("sandokan.in","r"),*OUT=fopen("sandokan.out","w");

int N,K,fact[MaxN],Invfact[MaxN];
int LogPow(int base,int exp)
{
    int ans=1;
    for(int i=0;i<30;i++)
    {
        if(exp&(1<<i))
            ans=1LL*base*ans%MOD;
        base=1LL*base*base%MOD;
    }
    return ans;
}
int comb(int n,int k)
{
    return 1LL*fact[n]*Invfact[k]%MOD*Invfact[n-k]%MOD;
}
int main()
{
    fscanf(IN,"%d%d",&N,&K);
    N=N%(K-1);
    K--;
    if(!N)N=K-1;
    else N--;
    fact[0]=Invfact[0]=1;
    for(int i=1;i<MaxN;i++)
    {
        fact[i]=1LL*fact[i-1]*i%MOD;
        Invfact[i]=LogPow(fact[i],MOD-2);
    }
    fprintf(OUT,"%d\n",comb(K,N));
    return 0;
}