Cod sursa(job #1140270)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 11 martie 2014 21:09:30
Problema GFact Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <algorithm>
#include <fstream>

using namespace std;

ifstream in("gfact.in");
ofstream out("gfact.out");

int primcautat;

int zero(int n)
{
    int sum;

    sum = 0;
    while(n)
    {
        sum += n / primcautat;
        n /= primcautat;
    }

    return sum;
}

int main()
{
    int p, q, primcurent, nrprim, exp, expc, prim, i, pas;

    in>>p>>q;

    prim = 1;
    primcurent = 1;
    primcautat = 1;
    exp = 1;
    expc = 0;

    while(!(p % 2))
    {
        p /= 2;
        primcurent *= 2;
        expc++;
    }

    if(prim < primcurent)
    {
        prim = primcurent;
        primcautat = 2;
        exp = expc;
    }

    nrprim = 3;

    while(p != 1)
    {
        primcurent = 1;
        expc = 1;
        while(!(p % nrprim))
        {
            p /= nrprim;
            primcurent *= nrprim;
            expc++;
        }

        if(prim < primcurent)
        {
            prim = primcurent;
            exp = expc;
            primcautat = nrprim;
        }
        nrprim += 2;
    }

    i = 0;
    pas = 1 << 30;

    while(pas)
    {
        if(zero(i + pas) < exp * q)
        {
            i += pas;
        }
        pas /= 2;
    }

    out<<i + 1<<'\n';
    return 0;
}