Pagini recente » Cod sursa (job #1681755) | Cod sursa (job #2867054) | Cod sursa (job #900872) | Cod sursa (job #2886566) | Cod sursa (job #1655840)
#include <fstream>
using namespace std;
long long f(int prm, int put);
long long maxim(long long x, long long y);
int main()
{
long long nr = 0;
int a, p;
ifstream in("gfact.in");
in >> a >> p;
for (int i = 2; i * i <= a; i++) {
if ( a % i == 0 ) {
int l = 0;
while (a % i == 0) {
a /= i;
l++;
}
l *= p;
nr = maxim(nr, f(i, l));
}
}
if (a != 1) {
nr = maxim(nr, f(a, p));
}
ofstream out("gfact.out");
out << nr;
return 0;
}
long long maxim(long long x, long long y) {
if (x > y)
return x;
return y;
}
long long f(int prm, int put) {
long long p = 0, q = (1ll << 60);
while (q > 0) {
long long r = 0, a = (p + q) / prm;
while (a > 0) {
r += a;
a /= prm;
}
if (r < put)
p += q;
q /= 2;
}
return p + 1;
}