Cod sursa(job #125778)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 20 ianuarie 2008 18:03:30
Problema GFact Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>
int main()
{ int p,q,st,dr,m,nr,cp,d,c=0;
FILE*f=fopen("gfact.in","r");
FILE*g=fopen("gfact.out","w");
fscanf(f,"%d%d",&p,&q);
d=1;
while(p%2==0) { p=p/2; c++;}
while(p!=1)
	{
	d=d+2;
	c=0;
	while(p%d==0)
		{
		c++;
		p=p/d;
		}
	}
q=q*c;
st=1;
dr=2000000000;
while(st<=dr)
	{
	nr=0;
	cp=d;
	m=(st+dr)/2;
	while(m/cp)
		{
		nr=nr+m/cp;
		cp=cp*d;
		}
	if (nr==q)
		{
		while(m%d) m--;
		fprintf(g,"%d",m);
		return 0;
		}
	if (nr>q) dr=m-1;
	if (nr<q) st=m+1;
	}
fprintf(g,"%d",st);
return 0;
}