Pagini recente » Cod sursa (job #3245743) | Cod sursa (job #3280419) | Cod sursa (job #3143301) | Cod sursa (job #700493) | Cod sursa (job #492119)
Cod sursa(job #492119)
#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;}