Cod sursa(job #1118768)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 24 februarie 2014 13:09:33
Problema GFact Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int put, st, dr, mij, p, q, v, Max, cop, nr, i, sol;
int main()
{
    f>>p>>q;
    for (i=2; i*i<=p; i++)
    {
        while (p%i==0)
        {
           put++;
           p/=i;
        }
        st=1;
        dr=20;
        while(st<=dr)
        {
            nr=0;
            mij=(st+dr)/2;
            for (cop=i; cop<=mij; cop*=i)
                nr+=mij/cop;
            if (nr<put*q)
                st=mij+1;
            else
            {
                sol=mij;
                dr=mij-1;
            }
        }
        if (Max < sol)
            Max = sol;
    }
    if(p!=1)
    {
        st=1;
        dr=2000000001;

        while(st<=dr)
        {
            nr=0;
            mij=(st+dr)/2;
            for (cop=i; cop<=mij; cop*=i)
                nr+=mij/cop;
            if (nr<q)
                st=mij+1;
            else
            {
                sol=mij;
                dr=mij-1;
            }
        }
        if (Max < sol)
            Max = sol;
    }

    g<<Max;
    return 0;
}