Cod sursa(job #1140231)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 11 martie 2014 20:38:35
Problema GFact Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <algorithm>
#include <fstream>

using namespace std;

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

int prim;

int zero(int n)
{
    int sum;

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

    return sum;
}

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

    in>>p>>q;

    prim = 0;
    primcurent = 1;

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

    prim = max(prim, primcurent);
    nrprim = 3;

    while(p != 1)
    {
        primcurent = 1;

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

        prim = max(prim, primcurent);
        nrprim += 2;
    }

    i = 0;
    pas = 1 << 30;

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

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