Pagini recente » Cod sursa (job #1732345) | Cod sursa (job #198601) | Cod sursa (job #60472) | Cod sursa (job #1410863) | Cod sursa (job #2794806)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("gfact.in");
ofstream fout ("gfact.out");
int p,q,m;
int pow(int a,int b)
{
long long g=b;
int c=0;
while (g<=a)
{c=c+a/g;
g*=b;}
return c;
}
struct div
{
int d,e;
}v[1001];
int main()
{
fin >>p>>q;
int i=2,k=0;
while (i*i<=p)
{while (p%i==0)
{v[k+1].e++;
p=p/i;}
if (v[k+1].e>0) {k++;v[k].d=i;}
i++;}
if (p>1) {k++;v[k].d=i;v[k].e=1;}
for (i=1;i<=k;i++)
{int x=v[i].d,y=q*v[i].e;
long long left=1,right=60000000000000,sol=0;
while (left<=right)
{long long mid=(left+right)/2;
if (pow(mid,x)>=y) {sol=mid;
right=mid-1;}
else {left=mid+1;}}
if (sol>m) m=sol;}
fout <<m;
return 0;
}