Cod sursa(job #2795512)

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