Cod sursa(job #464209)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 19 iunie 2010 11:28:37
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 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;}