Cod sursa(job #3253744)

Utilizator ax_dogaruDogaru Alexandru ax_dogaru Data 4 noiembrie 2024 17:31:56
Problema GFact Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

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

bool verif(int fact, int p, int q) {
    int sum=0, cp=p;
    while(fact/p>0) {
        sum+=(fact/p);
        p=p*cp;
    }
    if(sum>=q) {
        return true;
    } else {
        return false;
    }
}

int main()
{
    int p, q, divmax=1, dv=2, exp=0;
    fin >> p >> q;
    while(p!=1) {
        if(p%dv==0) {
            exp=0;
        }
        while(p%dv==0) {
            divmax=dv;
            p/=dv;
            exp++;
        }
        dv++;
        if(dv*dv>p) {
            dv=p;
        }
    }
    p=divmax;
    q=q*exp;

    long long l=1, r=INT_MAX, mid, sol=-1;
    if(p==1) {
        fout << "0";
    } else {
        while(l<=r) {
            mid=(l+r)/2;
            if(verif(mid, p, q)) {
                r=mid-1;
                sol=mid;
            } else {
                l=mid+1;
            }
        }
        fout << sol;
    }
    return 0;
}