Cod sursa(job #397791)

Utilizator mihai995mihai995 mihai995 Data 17 februarie 2010 15:13:05
Problema GFact Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
using namespace std;
long long maxim,p,q;
long long putere(int n,int p)
{
	long long rez=0;
	while (n)
	{
		rez+=n/p;
		n/=p;
	}
	return rez;
}

void caut(int a,int x)
{
	long long i,pas=1<<30;
	for (i=0;pas;pas>>=1)
		if (putere(i+pas,a)<x) i+=pas;
	if (maxim<i+1) maxim=i+1;
}

void gfact()
{
	long long p2,i;
	for (i=2;i*i<=p;i++)
		if (p%i==0) 
		{
			p2=0;
			while(p%i==0)
			{
				p/=i;
				p2+=q;
			}
			caut(i,p2);			
		}
	if(p!=1) caut(p,q);
}

int main()
{
	ifstream f("gfact.in");
	ofstream o("gfact.out");
	f>>p>>q;
	if (p==1) 
	{
		o<<"1";
		return 0;
	}
	gfact();
	o<<maxim;
	return 0;
}