Cod sursa(job #3039078)

Utilizator PsyDuck1914Feraru Rares-Serban PsyDuck1914 Data 28 martie 2023 10:10:35
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#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;
}