Cod sursa(job #492119)

Utilizator voicufilipVoicu Filip voicufilip Data 13 octombrie 2010 15:19:29
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream.h>
long long unsigned caut(long long unsigned c,long long unsigned d)
{long long unsigned st,dr,m,cd,nr;
st=1;
dr=c*d*2;
while(st<=dr)
   {cd=d;
   m=(st+dr)/2;
   nr=0;
   while(m/cd)
      {nr+=m/cd;
	  cd*=d;}
	if(nr==c)
     {while(m%d)
         m--;
      return m;}
    else
     if(nr>c)
      dr=m-1;
	 else
      st=m+1;}
while(st%d)
 st--;
return st;}
int main()
{
	long long unsigned p,q,d,c,var,max=0;
	ifstream citire("gfact.in");
	ofstream afisare("gfact.out");
	citire>>p>>q;
	for(d=2;d*d<=p;d++)
	  {
		for(c=0;p%d==0;c++,p/=d);
		if(c)
		 {var=caut(c*q,d);
		if(var>max)
		  max=var; 
	  }
	}
	if(p>1)
	var=caut(q,p);
 if(var>max)
  max=var;}
afisare<<max;}