Pagini recente » Cod sursa (job #1177286) | Cod sursa (job #198408) | Cod sursa (job #2747954) | Cod sursa (job #2587127) | Cod sursa (job #949047)
Cod sursa(job #949047)
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
long long p, q, a[110], v[110], nr=0;
void desc(long long n){
long long i=2, k;
while(i*i<=n)
{
if(n%i==0)
{
k=0;
while(n%i==0)
{
n/=i;
k++;
}
a[++nr]=i;
v[nr]=k;
}
i++;
}
if(n!=1)
{
a[++nr]=n;
v[nr]=1;
}
}
long long verif(long long n){
long long i, e, s=1, aux;
for(i=1; i<=nr; i++)
{
aux=n;
e=0;
while(aux>=a[i])
{
e+=aux/a[i];
aux/=a[i];
}
if(e<v[i])
s=0;
}
return s;
}
long long cb(){
long long i=0, x=(1LL)<<60;
while(x!=0)
{
if(verif(i+x)==0)
i+=x;
x=(x>>1);
}
return i+1;
}
int main(){
long long i;
f>>p>>q;
desc(p);
for(i=1; i<=nr; i++)
v[i]*=q;
g<<cb();
return 0;
}