Pagini recente » Cod sursa (job #800168) | Cod sursa (job #2848627) | Cod sursa (job #1911532) | Cod sursa (job #158671) | Cod sursa (job #2662382)
#include <bits/stdc++.h>
using namespace std;
#define x1 "gfact.in"
#define x2 "gfact.out"
ifstream in(x1);
ofstream out(x2);
int v[11], f[11], c, q, p;
long long putere(long long n, int p1) {
long long r = 0;
while (n >= p1) {
r += n / p;
n /= p;
}
return r;
}
bool divfact(long long n) {
for (int i = 0; i < c; i++) {
if (putere(n, v[i]) < f[i] * q) {
return 0;
}
}
return 1;
}
long long cautb() {
long long r = 0, pas = 1LL << 45;
while (pas != 0) {
if (!divfact(r + pas)) {
r += pas;
}
pas /= 2;
}
r++;
return r;
}
int main() {
int i, j, a, d = 2;
in >> p >> q;
while(d * d <= p) {
if(!p % d) {
v[c] = d;
while(!p / d) {
f[c] ++;
p /= d;
}
c++;
}
d++;
}
if(p > 1) {
v[c] = p;
f[c++] = 1;
}
out << cautb();
return 0;
}