Cod sursa(job #169131)

Utilizator stefynr8Space Monkey stefynr8 Data 1 aprilie 2008 11:17:55
Problema Sandokan Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <iostream.h>
#include <fstream.h>
#include <math.h>



int main()

{
 fstream f1("sandokan.in",ios::in);
 fstream f2("sandokan.out",ios::out);
 int n,k,rest,i,max,min,x,d;
 int prime[5005];
 long val;
 
 
 f1 >> n;
 f1 >> k;
 
 min=n%(k-1);
 if (min==0) min=k-1;
 min--; n--;
 if (min>(n-min)) min=n-min;
 max=n-min;
 for (i=2;i<=5000;i++) prime[i]=0;
  
 for (i=max+1;i<=n;i++) {
                         x=i;
                         d=1;
                         while (x>1) {
                                      d++;
                                      while (x%d==0) {
                                                      prime[d]++;
                                                      x=x/d;
                                                     }
                                     }
                        }
  for (i=1;i<=min;i++) {
                        x=i;
                        d=1;
                        while (x>1) {
                                     d++;
                                     while (x%d==0) {
                                                     prime[d]--;
                                                     x=x/d;
                                                    }
                                    }
                       }

 val=1;
 for (i=5000;i>=2;i--)
     if (prime[i]!=0)
        for (k=1;k<=prime[i];k++)
            val=val*i%2000003;                       

 f2 << val;
 f1.close();
 f2.close();
 
 return 0;
}