Cod sursa(job #187378)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 3 mai 2008 19:12:28
Problema Sandokan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
# include <stdio.h>

# define FIN "sandokan.in"
# define FOUT "sandokan.out"

long long n,k,rez,aux,m,min,max,ct;
long long s[5001];

long long cmmdc(long long  a,long long b)
{
     if (b==0) return a;
          else return cmmdc(b, a%b);
}

int main()
{
    freopen(FIN,"r",stdin);
    freopen(FOUT,"w",stdout);
    scanf("%lld%lld",&n,&k);
    m=n;
    while (m>=k)
      {
          m-=(k-1);
      }
    m--; n--;
    k=n-m;
    if (k>m)
      {
         max=k;
         min=m;
      }
    else
      {
         max=m;
         min=k;
      }
    rez=1;
    long long i,l;
    for (i=1; i<=min; i++)
      s[i]=i;  
    for (i=max+1; i<=n; i++)
      {  
         ct=2;
         l=i;
         while (ct<=min && l>1)
           {
              if (s[ct]>1)
                {
                  aux=cmmdc(s[ct],l);
                  l/=aux;
                  s[ct]/=aux;
                }
              ct++;
           }
         rez=(rez*l) % 2000003;
      }
    printf("%lld",rez);
    return 0;
}