Pagini recente » Cod sursa (job #3122712) | Cod sursa (job #473874) | Cod sursa (job #526620) | Cod sursa (job #2189617) | Cod sursa (job #2282777)
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int divi[502];
int put[502];
int p, q;
bool ver(long long x) {
long long s=0, k ;
int i;
for (i=1; i<=divi[0]; i++) {
s=0;
k=divi[i];
while (x/k>0) {
s+=x/k;
k*=divi[i];
}
if (s<put[i]*q)
return 0;
}
return 1;
}
long long fact(int a, int b) {
long long r=0, pas=(long long)1<<60;
while (pas!=0) {
if (!ver(r+pas)){
r+=pas;
}
pas/=2;
}
return r+1;
}
int main() {
f>>p>>q;
int d=2;
while (d*d<=p) {
if (!(p%d)) {
divi[++divi[0]]=d;
while (!(p%d)){
p/=d;
put[divi[0]]++;
}
}
d++;
}
if (p>1) {
divi[++divi[0]]=p;
put[divi[0]]++;
}
g<<fact(p, q);
return 0;
}