Cod sursa(job #3040493)

Utilizator MAlex2019Melintioi George Alexandru MAlex2019 Data 29 martie 2023 22:19:52
Problema GFact Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("gfact.in");
ofstream fout("gfact.out");

const long long maxval = 6e13;

long long queue(int a, int q) {
    vector<long long> pows;
    long long p = 1;
    while (p <= maxval) {
        pows.push_back(p);
        p *= a;
    }
    long long target = 1LL*q*(a - 1);
    long long answer;
    int st = 0, dr = pows.size() - 1;
    while (st < dr) {
        int mij = (st + dr)/2;
        if (pows[mij] - 1 >= target) {
            answer = pows[mij];
            dr = mij - 1;
        }
        else
            st = mij + 1;
    }
    return answer;
}

int main() {
    int p, q;
    fin >> p >> q;

    int d = 2;
    long long answer = 0;
    while (d <= p) {
        if (p % d == 0) {
            int e = 0;
            while (p % d == 0) {
                e++;
                p /= d;
            }
            answer = max(answer, queue(d, e*q));
        }
        d++;
    }
    fout << answer << endl;

    return 0;
}