Cod sursa(job #2565018)

Utilizator etienAndrone Stefan etien Data 2 martie 2020 11:40:30
Problema GFact Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int st,dr,mi,p,q,poz;
int v[15],nrfact,k[15];
int putere(int f,int nr)
{
    int put=f,s=0;
    while(put<=nr)
    {
        s+=nr/put;
        put*=f;
    }
    return s;
}
bool good(int nr)
{
    for(int i=1;i<=nrfact;i++)
        if(k[i]>putere(v[i],nr))
            return 0;
    return 1;
}
int main()
{
    fin>>p>>q;
    for(int d=2;d*d<=p;d++)
    {
        if(p%d==0)
        {
            v[++nrfact]=d;
            while(p%d==0)
            {
                p/=d;
                k[nrfact]++;
            }
            k[nrfact]*=q;
        }

    }
    if(p>1)
        {k[++nrfact]=q;
        v[nrfact]=p;}
    int nr=2000000000;
    st=1;
    dr=nr;
    while(st<=dr)
    {
        mi=(st+dr)/2;
        if(good(mi))
        {
            dr=mi-1;
            poz=mi;
        }
        else st=mi+1;
    }
    fout<<poz;
}