Pagini recente » Cod sursa (job #1900270) | Cod sursa (job #1659890) | Cod sursa (job #2085644) | Cod sursa (job #975969) | Cod sursa (job #3039078)
#include <bits/stdc++.h>
using namespace std;
ifstream ff("gfact.in");
ofstream g("gfact.out");
long long n, p, factmin;
vector<int>f;
vector<int>e;
long long number(long long k,long long x){
long long sol = 0;
for (long long i = x; i <= k; i *= x)
sol += k / i;
return sol;
}
long long fm(int x,int y){
long long k = 1ll << 60, pas = 1ll << 60;
while (pas != 0)
{
if (k - pas > 0)
if (number(k - pas,x) >= y)
k -= pas;
pas /= 2;
}
return k;
}
int main()
{
ff >> n >> p;
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
f.push_back(i);
int exp = 0;
while (n % i == 0)
{
exp++;
n /= i;
}
e.push_back(exp * p);
}
}
if (n != 1){
f.push_back(n);
e.push_back(p);
}
for (int i = 0; i < f.size(); i++)
factmin = max(factmin,fm(f[i],e[i]));
g << factmin;
return 0;
}