Cod sursa(job #1261862)

Utilizator Darius15Darius Pop Darius15 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;
}