Cod sursa(job #2792606)

Utilizator db_123Balaban David db_123 Data 2 noiembrie 2021 00:25:34
Problema GFact Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <climits>

using namespace std;

ifstream cin("gfact.in");
ofstream cout("gfact.out");

int p,q;
long long fact[20];
bool seDivide1(int nr){
    int nrAparitii=0,cp=0;
    while(nr%p==0){
        nr/=p;
        nrAparitii++;
    }

    if(nrAparitii>=q){
        return true;
    }
    return false;
}
bool seDivide(int nr){
    ///check if fact[nr] se divide la
    ///         p power q
    long long a =  fact[nr];
    int b = q;
    while(b > 0)
    {
        if(a%p == 0)
        {
            b--;
            a = a / p;
        }
        else
            break;
    }
    return (b == 0) ;
}

int main()
{
    cin>>p>>q;
    long long f=1;
    fact[0] = 1;
    fact[1] = 1;
    for(int i = 2; i < 20 ; i++)
    {
        fact[i] = fact[i-1] *i;
        //cout << fact[i] << " ";
    }
    //cout << endl;

    int left=1,right=19,mid,sol=10000;
    while(left<=right){
        mid=(right+left)/2;
        if(seDivide(mid)){
            //cout << "sol : "<< mid << endl;
            sol = min(sol,mid);
            right = mid-1;
        }
        else{
            left=mid+1;
        }
    }
    cout << sol;
    return 0;
}