Cod sursa(job #183828)

Utilizator razvi9Jurca Razvan razvi9 Data 22 aprilie 2008 17:26:26
Problema GFact Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
long long a,b,rez,i,j,aux;
inline bool good(long long x)
{
	x=x*i;
	int nr=0;
	while(x/i)
		nr+=x/i,x/=i;
	return nr>=j;
}
inline long long search(long long st,long long dr)
{
	int mij;
	while(st<dr)
	{
		mij=(st+dr)>>1;
		if(good(mij))
			dr=mij;
		else
			st=mij+1;
	}
	return st;
}
int main()
{
	freopen("gfact.in","r",stdin);
	freopen("gfact.out","w",stdout);
	scanf("%lld %lld",&a,&b);
	i=2;
	while(i*i<=a)
	{
		j=0;
		while(a%i==0)
			a/=i,++j;
		if(j)
		{
			j=j*b;
			aux=search(1,j)*i;
			if(aux>rez) rez=aux;
		}
	}
	if(a!=1)
	{
		i=a;
		j=b;
		aux=search(1,b)*i;
		if(aux>rez) rez=aux;
	}
	printf("%lld\n",aux);
	fclose(stdout);
	return 0;
}