Cod sursa(job #1412997)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 1 aprilie 2015 18:00:40
Problema Sandokan Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#define MOD 2000003

using namespace std;
int nr,sol,n,k,i,df,solm;

inline void solve(int n,int k)
{
    int df,i;
    df=n-k;
    solm=k;
    nr=1;

    for(i=k;i>k-df;--i)
    nr=(int)((1LL*nr*i)%MOD);
    solm=(solm+(int)(nr/2))%MOD;
    sol=(1LL*sol*solm)%MOD;
    if(n-2*k+2<0) printf("%d\n",sol);
    else solve(n-k+1,k);
}
int main()
{
    freopen("sandokan.in","r",stdin);
    freopen("sandokan.out","w",stdout);

    scanf("%d%d",&n,&k);
    ///////////////////////cazuri sigure
    if(n==k)
    {
        printf("1\n");
        return 0;
    }
    if(n==k+1)
    {
        printf("%d\n",n-1);
        return 0;
    }
    ///////////////////////cazuri nesigure
    if(n+2>=2*k)
    {
       sol=1;
       solve(n,k);
       return 0;
    }
    /////////////////////cazuri aproape sigure
    df=n-k;sol=k;nr=1;
    for(i=k;i>k-df;--i)
    nr=(int)((1LL*nr*i)%MOD);
    sol=(sol+(int)(nr/2))%MOD;
    printf("%d\n",sol);
    return 0;
}