Pagini recente » Cod sursa (job #3276858) | Cod sursa (job #3005720) | Cod sursa (job #2923301) | Cod sursa (job #313581) | Cod sursa (job #3152895)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <cmath>
using namespace std;
unordered_map < int, int > fact;
inline int logbase(int base, int x) {
return (int)(log(x) / log(base));
}
int main() {
ifstream f("gfact.in");
ofstream g("gfact.out");
int p, q; f >> p >> q;
for(int i = 2, t = p; p > 1 && i * i <= t; i++) {
int k = 0;
while(p % i == 0) {
k++;
p /= i;
}
if(k) {
fact[i] = k * q;
}
}
if(p > 1) {
fact[p] = q;
}
int l = 1, r = 200000, m = 0;
while(l <= r) {
m = (l + r) / 2;
unordered_map < int, int > aux;
for(int i = 2; i <= m; i++) {
for(auto j: fact) {
if(i % j.first == 0) {
aux[j.first] += logbase(j.first, i);
}
}
}
bool ok = true;
for(auto i: fact) {
if(aux[i.first] < i.second) {
ok = false;
}
}
if(ok) {
r = m - 1;
}
else {
l = m + 1;
}
}
g << m << '\n';
f.close();
g.close();
return 0;
}