Cod sursa(job #1261862)
| Utilizator | Data | 12 noiembrie 2014 19:38:57 | |
|---|---|---|---|
| Problema | Numere 2 | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <fstream>
using namespace std;
ifstream f("numere2.in");
ofstream g("numere2.out");
long long p,l,put,sol1,sol2,st,dr,m,pr,i,prec;
int main()
{
f>>p;
put=2;
sol1=p,sol2=1;
st=1,dr=p;
while(st<=dr)
{
m=(st+dr)/2;
pr=l=1;
for (i=1;i<=put;i++)
{
prec=pr;pr=prec*m,l=l*(m+1);
if (pr/m!=prec) break;
}
if (pr<=p && p<l)
{
if (pr==p) sol1=m,sol2=put;
put++,st=1,dr=m;
}
else if (l<=p) st=m+1;
else dr=m-1;
}
g<<sol1<<'\n'<<sol2;
return 0;
}
