Cod sursa(job #70590)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 6 iulie 2007 14:54:46
Problema GFact Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream.h>
long int a[16000000],P,Q;
int factor(long int N){
long t=0,t1=0;
for (long i=2;i<=P;i++)
   if (a[i]>0){
     long u=1,nr=0;
     t1++;
      while (u*i<=N){
	nr+=N/(u*i);
	u*=i;}
      if (nr>=a[i])
	 t++;}
if (t1==t)
   return 1;
return 0;}
void comparare(long long P,long int a[100]){
while (P%2==0){
  a[2]++;
  P/=2;}
for (long long d=3;d<=P/d;d+=2)
   while (P%d==0){
	a[d]++;
	P/=d;}
  if (P!=1)
     a[P]++;
}
void imn(long P){
  for (long i=0;i<=P;i++)
	a[i]*=Q;
}
int main(){
ifstream fin("gfact.in");
fin>>P>>Q;
fin.close();
comparare(P,a);
imn(P);
ofstream fout("gfact.out");
for (long int i=2;;i++){
if (factor(i)==1)     {
   fout<<i;
  break; }    }
fout<<"\n";
fout.close();
return 0;
}