Cod sursa(job #2549696)

Utilizator mihnea.cazan15mihnea cazan mihnea.cazan15 Data 17 februarie 2020 21:58:17
Problema GFact Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
unsigned long long power(unsigned long long p,unsigned long long n)
{
    unsigned long long s=0,cp=p;
    while(p<=n)
    {
        s+=n/p;
        p*=cp;
    }
    return s;
}
unsigned long long solve(unsigned long long p,unsigned long long q)
{
    unsigned long long st,dr,m;
    int i=1;
    st=0;
    dr=1;
    for(i=2;i<=60;i++)
        dr*=2;
    bool ok=1;
    while(st<=dr&&ok)
    {
        m=(st+dr)/2;
        if(power(p,m)>q)
           dr=m-1;
        if(power(p,m)<q)
           st=m+1;
        if(power(p,m)==q)
           {
               ok=0;
               st=m;
           }
    }
    return st-st%p;
}
int main()
{
    unsigned long long p,q,d=2,rez=0,pow;
    cin>>p>>q;
    cout<<solve(p,q);
    return 0;
}