Cod sursa(job #2398975)

Utilizator andreibazavanAndrei Bazavan andreibazavan Data 6 aprilie 2019 16:28:36
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<bits/stdc++.h>

using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
unsigned long long p,q,a,sol,j,nr,r,k=2,x,ma,pr,i,m;
int main()
{
fin>>p>>q;
for(k=2;k*k<=p;++k)
	{
	r=0;
	while(p%k==0) {++r; p/=k;}
	if(r!=0)
		{
		r=r*q;
		i=1; j=2*r*k;
		while(i<=j)
			{
			m=(i+j)/2;
			nr=0; pr=k;
			while((m/pr)!=0) { nr+=(m/pr); pr*=k; }
			if(nr==r)
				{
				while(m%k!=0) m--;
				break;
				}
			else if(nr>r) j=m-1;
			else i=m+1;
			}
		if(m>ma)ma=m;
		}
	}
if(p>1)
	{k=p;  r=q;
		i=1; j=2*r*k;
		while(i<=j)
			{
			m=(i+j)/2;
			nr=0; pr=k;
			while((m/pr)!=0) { nr+=(m/pr);pr*=k; }
			if(nr==r)
				{
				while(m%k!=0) m--;
				break;
				}
			else if(nr>r) j=m-1;
			else i=m+1;
			}
		if(m>ma)ma=m;
	}
fout<<ma<<endl;
return 0;
}