Cod sursa(job #29030)

Utilizator c_sebiSebastian Crisan c_sebi Data 8 martie 2007 15:35:19
Problema GFact Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream.h>
#define max 50000

long p, q, baza[max], dim;
long exp[max];

void desc(long baza[max], long exp[max], long p, long q, long &dim)
{
	long i, d=2;
	while (p!=1)
		{
		  if (p%d==0)
			{for (i=0; i<dim; i++) if (baza[i]==d) break;
			baza[i]=d;
			while (p%d==0)
				{p/=d; exp[i]++;}
			exp[i]*=q;
			if (i==dim) dim++;
			}
		d++;

		}
}


int main()
{
	long i, ci, j;
	ifstream f("gfact.in");
	ofstream g("gfact.out");
	f>>p>>q;
	f.close();
	if (p==1) g<<"0\n";
	else {
	desc(baza, exp, p, q, dim);
	i=2;
	while (1)
		{ci=i;
		for (j=0; j<dim && ci!=1; j++)
			while (ci%baza[j]==0 && exp[j])
				{ci/=baza[j]; exp[j]--; }
		for (j=0; j<dim; j++) if (exp[j]) break;
		if (j==dim) break;
		i++;
		}
	g<<i<<"\n";
	}
	g.close();
	return 0;
}