Cod sursa(job #1347206)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 18 februarie 2015 20:47:51
Problema Sandokan Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#define nmax 5005
#define mod 2000003
using namespace std;
ifstream f("sandokan.in");
ofstream g("sandokan.out");

int v[nmax];

int comb(int n , int k)
{
    int i,a,x,j;
    for (i=2;i<=n;i++)
        v[i]++;
    for (i=2;i<=k;i++)
        v[i]--;
    for (i=2;i<=n-k;i++)
        v[i]--;

    for (i=n;i>=2;i--)
        if (v[i]!=0){
        a=v[i];v[i]=0;
        x=i;
        j=2;
        while (x-1) {

            if (x%j==0) {
                x/=j;
                v[j]+=a;
                while (x%j==0) {
                    x/=j;
                    v[j]+=a;
                }
            }
            else
                if (j*j>x) {

                    v[x]+=a;
                    x=1;

                }
            j++;
        }

    }
    int sol=1;
    for (i=2;i<=n;i++)
        while (v[i]) {
            v[i]--;
            sol*=i;
            sol%=mod;
        }
    return sol;

}

int main()
{
    int n,k,i;
    f>>n>>k;
    i=n;
    while (i>(k-1))
        i-=(k-1);
    g<<comb(n-1,i-1);

    return 0;
}