Cod sursa(job #163640)

Utilizator ErgoVicol Sergiu Constantin Ergo Data 22 martie 2008 14:50:53
Problema Sandokan Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda Finala, Clasele 5-8 Marime 1.04 kb
#include <fstream.h>

char v[50001];
long factorial(long a,long b){
        long i,j,z=b-a+1;
        long s;
        long long t=1;
        int ok;
        for (i=a;i<=b;i++){
                ok=1;
                s=i;
                for (j=z;j>=1;j--)
                if (s%j==0&&v[j]==0)
                s=s/j;
                ok=0;
                v[j]=1;
                t=(t*s)%2000003;

        }
        return t;
        }

int main(){
        long n,k,sf,t,p,i;
        ifstream fin("sandokan.in");
        ofstream fout("sandokan.out");
        fin>>n>>k;
        for (i=1;i<=n;i++) fin>>t;
        sf=n%(k-1);
        if (sf==0) sf=k-1;
        if (sf==1) fout<<'1'; else
                if (sf==0) fout<<n; else
                        {
                        sf=sf-1;
                        n=n-1;
                        p=n-sf;
                        if (p>n/2) p=n-p;
                        fout<<factorial(p+1,n);
                        }
        

        fout.close();
        

return 0;
}