Cod sursa(job #1192091)

Utilizator dd1997Dan Vasile dd1997 Data 28 mai 2014 20:22:01
Problema Sandokan Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("sandokan.in");
ofstream g ("sandokan.out");

unsigned long long n, r, k, t, j;

unsigned long long prod(unsigned long long a, unsigned long long b)
{
    unsigned long long i=1;
    for(int j=a+1; j<=b; j++)
        i*=j;
    return i;
}
int cmmdc(int a, int b)
{
    if (a%b==0)
      return b;
    else
      return cmmdc(b,a%b);
}

int a[5100],i,limj,lims;
int main()
{
    f >> n >> k;
    r=(n-1)%(k-1);
    for (i=1;i<=n-1;i++)
       a[i] = i;
    if(r+r>n-1)
    {
        for (int i=1;i<=r;i++)
            a[i]=1;
        limj = n-r-1;
        lims = r+1;
    }
    else
    {
        for (int i=1;i<=n-1-r;i++)
            a[i]=1;
        limj = r;
        lims = n-r;
    }

    for (j=limj;j>=2;j--)
    {
        int tt = j;
        for (int k=n-1;k>=lims;k--)
        {
            int c = cmmdc(tt,a[k]);
            tt /=c;
            a[k]/=c;
            if (tt==1)
              break;
        }
    }

    t = 1;
    for (i=lims;i<=n-1;i++)
      t = (t*a[i])%2000003;

    g << t;
    return 0;
}