Pagini recente » Cod sursa (job #314841) | Cod sursa (job #3126883) | Cod sursa (job #1662483) | Cod sursa (job #1436868) | Cod sursa (job #2280625)
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int div[502] ;
int put[502] ;
int p, q ;
bool ver(long long x) {
long long s=0, k ;
int i;
for (i=1; i<=div[0]; i++) {
s=0 ;
k=div[i] ;
while (x/k>0) {
s+=x/k;
k*=div[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)) {
div[++div[0]]=d;
while (!(p%d)){
p/=d;
put[div[0]]++;
}
}
d++;
}
if (p>1) {
div[++div[0]]=p;
put[div[0]]++;
}
g<<fact(p, q);
return 0;
}