Cod sursa(job #2549708)
| Utilizator | Data | 17 februarie 2020 22:09:19 | |
|---|---|---|---|
| Problema | GFact | Scor | 20 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.69 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;
}
int main()
{
unsigned long long p,q,ok=1,st,dr=1,i,m;
cin>>p>>q;
//cout<<q;
st=0;
for(i=2;i<=60;i++)
dr*=2;
while(st<=dr&&ok)
{
m=(st+dr)/2;
if(power(p,m)>q)
dr=m-1;
if(power(p,m)==q)
{
ok=0;
st=m;
}
if(power(p,m)<q)
st=m+1;
}
cout<<st-st%p;
return 0;
}
