Cod sursa(job #1593848)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 8 februarie 2016 22:16:18
Problema Sandokan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

using namespace std;
const int Mod=2000003;

long long nr,ans;
int n,i,k;

int gcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x=1;
        y=0;
        return a;
    }

    int x1,y1,d=gcd(b,a%b,x1,y1);

    x=y1;
    y=x1-(a/b)*y1;
    return d;
}

int invMod(int a,int b)
{
    int x,y,c=gcd(a,b,x,y);
    while(x<0) x+=Mod;

    return x;
}

int main()
{
    freopen("sandokan.in","r",stdin);
    freopen("sandokan.out","w",stdout);

    scanf("%d%d",&n,&k);

    nr=ans=1LL;
    for(i=1;i<=n;++i)
    {
        nr=nr*i%Mod;
        if(i==k)   ans=ans*invMod(nr,Mod)%Mod;
        if(i==n-k) ans=ans*invMod(nr,Mod)%Mod;
    }
    ans=ans*nr%Mod;
    printf("%lld\n",ans);

    return 0;
}