Cod sursa(job #2206108)

Utilizator VladAfrasineiAfrasinei VladAfrasinei Data 21 mai 2018 10:34:42
Problema GFact Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int a,b;
unsigned long long mini;
int put(int x,int y)
{
    int nr=0,t=y;
    while(x>=t)
    {
        nr+=x/t;
        t=t*y;
    }
    return nr;
}
int main()
{
    int i,d,p,c,v,e,f;
    unsigned long long t,maxi=0;
    unsigned long long st,dr,m;
fin>>a>>b;
c=a;
d=2;
while(c!=1)
{
    p=0;
    t=1;
    while(c%d==0)
    {
        c=c/d;
        p++;
        t=t*d;
    }
    if(p>0)
    {
        if(t>maxi)
        {
            maxi=t;
            v=d;
            e=p;
        }
    }
    if(d*d<c)
        d++;
    else
        d=c;
}
st=1;
dr=1;
e=e*b;
for(i=1;i<=b;i++)
    dr=dr*maxi;
mini=dr;
while(st<=dr)
{
    m=(st+dr)/2;
    f=put(m,v);
    if(f>=e)
    {
        if(m<mini)
            mini=m;
        dr=m-1;
    }
    else
        st=m+1;
}
fout<<mini;
    return 0;
}