Cod sursa(job #782450)

Utilizator misinozzz zzz misino Data 27 august 2012 21:57:48
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
using namespace std;
ifstream f("Gfact.in");
ofstream g("Gfact.out");
int i,p,q,nr;
long long li,ls,mij;
struct putere{
	int numar,putere;
};
putere v[101];
long long pute(long long x,int p)
{long long c=0;
while(x>p)
{
x/=p;
c+=x;
}
return c;
}
bool verif(long long x)
{for(int i=1;i<=nr;++i)
	if(pute(x,v[i].numar)<v[i].putere)
		return 0;
return 1;
}


int main()
{f>>p>>q;
for(i=2;i*i<=p;++i)
	if(p%i==0)
	{++nr;
	v[nr].numar=i;
	v[nr].putere=0;
	while(p%i==0)
	{++v[nr].putere;
	p/=i;
	}
	v[nr].putere*=q;
	}
if(p!=1)
{++nr;
v[nr].putere=q;
v[nr].numar=p;
}
li=1;
ls=(long long)1000000000*(long long)30000;
while(li<=ls)
{mij=(li+ls)/2;
if(!verif(mij))
	li=mij+1;
else
	if(!verif(mij-1))
		break;
	else
		ls=mij-1;
}
g<<mij<<'\n';
return 0;
}