Cod sursa(job #1140252)

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

using namespace std;

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

int prim;

long long zero(long long n)
{
    long long sum;

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

    return sum;
}

int main()
{
    int p, q, primcurent, nrprim;
    long long 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 = (long long)1 << 49;

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

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