Cod sursa(job #1537146)

Utilizator mariakKapros Maria mariak Data 26 noiembrie 2015 23:02:49
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#include <algorithm>

using namespace std;
int p, q, F, Fm;
int gpf(int x)
{
    int d = 2, io, fm = 0;
    do
    {
        if (x % d == 0)
        {
            io = d;
            Fm = fm;
        }
        fm = 0;
        while((x % d) == 0)
        {
            x /= d;
            fm ++;
        }
        if (d * d >= x)
        {
            Fm = max(Fm, fm);
            return max(io, x);
        }
        d ++;
    }
    while(x != 1);
    return io;
}
int nf(long long x)
{
    int s = 0;
    while(x)
    {
        x /= F;
        s += x;
    }
    return s;
}
long long bs(long long fq)
{
    long long i = 0, p = 1 << 30;
    while(p)
    {
        if(nf(i + p) < fq)
            i += p;
        p /= 2;
    }
    return i;
}
int main()
{
    freopen("gfact.in ", "r", stdin);
    freopen("gfact.out", "w", stdout);
    scanf("%d %d", &p, &q);
    F = gpf(p);
    printf("%d\n", Fm);
    int k = bs(q * Fm);
    printf("%d\n", k + 1);
    return 0;
}