Cod sursa(job #3330410)

Utilizator aaagabiTurbinca Gabriel aaagabi Data 19 decembrie 2025 14:44:08
Problema GFact Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <iostream>
#include <vector>
#define fi first
#define se second
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
typedef long long ll;
vector <pair<ll,ll>> divs;
bool subexp(ll val,ll prim,ll maxi)
{
    ll res=0;
    ll prod=1;
    while(prod<=val/prim)
        {
            prod*=prim;
            res+=val/prod;
            if(maxi<=res)
                return false;
        }
    return true;
}
bool check(ll val)
{
    //val! divizibil p^q, deci prim^(exp*q) deci exp(val!,prim)>=exp*q
    for(auto p:divs)
        if(subexp(val,p.fi,p.se))
        return false;
    return true;

}
int main()
{

    ll d=2;
    ll p,q;
    fin>>p>>q;
    while(p>1)
    {
        int exp=0;
        while(p%d==0)
            exp++,p/=d;
        if(exp)
            divs.push_back({d,exp*q});
        d++;
        if(d*d>p)
            d=p;
    }
    int val=0;
    while(!check(val))
        val++;
    fout<<val;
    return 0;
}