Cod sursa(job #248999)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 27 ianuarie 2009 11:12:23
Problema GFact Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#define N 100000005   
long long p,q;
void citire()
{
	scanf("%lld%lld",&p,&q);
}
int calcul(int r,int k)
{
	int i,j,fact,t;
	for (i=k; i<=N; i+=k)
	{
		fact=0;
		for (j=k; j<=i; j++)
			if (j%k==0)
			{
				t=j;
				while (t%k==0)
				{
					t/=k;
					fact++;
				}
			}
		if (fact==r)
			return i;
	}
	return 0;
}
void desc()
{
	int i,putere;
	long long nr=0,max=0;
	for (i=2; i*i<=p ;i++)
		if (p%i==0)
		{
			putere=0;
			while (p%i==0)
			{
				p/=i;
				putere++;
			}
			nr=calcul(putere*q,i);
			if (nr>max)
				max=nr;
		}
	if (p!=1)
	{
		nr=calcul(1*q,p);
			if (nr>max)
				max=nr;
	}
	printf("%lld",max);
}
int main()
{
	freopen("gfact.in","r",stdin);
	freopen("gfact.out","w",stdout);
	citire();
	desc();
	return 0;
}