Cod sursa(job #3321371)

Utilizator AndreiFaurFaur Andrei Bogdan AndreiFaur Data 9 noiembrie 2025 12:36:27
Problema GFact Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p, q, div, pcopie, bmin, expon;
long long calc(long long b, long long d) {
    long long rez=0, putere=d;
    while(putere<=b) {
        rez+=b/putere;
        putere*=d;
    }
    return rez;
}
long long cautare(long long x) {
    long long le, ri, mid, best=0;
    le=1; ri=p*q;
    while(le<=ri) {
        mid=(le+ri)/2;
        if(calc(mid, div) >= x) {
            best=mid;
            ri=mid-1;
        }
        else {
            le=mid+1;
        }
    }
    return best;
}
int main()
{
    fin >> p >> q;
    pcopie=p;
    div=2;
    while(pcopie>1) {
        if(pcopie%div==0) {
            expon=0;
            while(pcopie%div==0) {
                expon++;
                pcopie/=div;
                bmin=max(bmin, cautare(expon*q));
            }
        }
    }
    fout << bmin;
    return 0;
}