Cod sursa(job #1805059)
| Utilizator | Data | 13 noiembrie 2016 13:50:10 | |
|---|---|---|---|
| Problema | GFact | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int sol,p,q,i,e;
int putere(int n,int p)
{
int rez=0;
while(n)
{
n/=p;
rez+=n;
}
return rez;
}
void caut(int a,int x)
{
int i,pas=1<<30;
for (i=0;pas;pas>>=1)
if (putere(i+pas,a)<x) i+=pas;
sol=max(sol,i+1);
}
int main()
{
f>>p>>q;
for(i=2;i*i<=p;++i)
if(p%i==0)
{
e=0;
while(p%i==0)
{
p/=i;
e+=q;
}
caut(i,e);
}
if(p>1) caut(p,q);
g<<sol;
return 0;
}
