Cod sursa(job #2795515)

Utilizator daria_pDaria Popescu daria_p Data 6 noiembrie 2021 15:26:14
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p,q,m,x,y,l,u,sol,mij,a[1005],b[1005],d,k,i,n;
long long fact(long long a,long long b)
{
    long long p=b,nr=0;
    while (p<=a)
    {
        nr=nr+a/p;
        p=p*b;
    }
    return nr;
}
int main()
{
    fin >>n>>q;
    if (n==1) fout <<1;
    else
    {
        d=2;k=0;
        while (d*d<=n)
        {
            while (n%d==0)
            {
                a[k+1]++;
                n=n/d;
            }
            if (a[k+1]>0){k++;b[k]=d;}
            d++;
        }
        if (n>1) {k++;b[k]=n;a[k]=1;}
        for (i=1;i<=k;i++)
        {
            p=1;u=99999999999999;sol=0;
            x=b[i];y=q*a[i];
            while (p<=u)
            {
                mij=(p+u)/2;
                if (fact(mij,x)>=y)
                {
                    sol=mij;
                    u=mij-1;
                }
                else
                {
                    p=mij+1;
                }
            }
            if (sol>m) m=sol;
        }
        fout <<m;
    }
    return 0;
}