Cod sursa(job #2085043)

Utilizator SpiristulTeribilStefan Vilcu SpiristulTeribil Data 9 decembrie 2017 16:33:07
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

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

const int M = 100000 ;
int v1[M] , v2[M] , nr ;
int main()
{
    long long p, q, x ;
    cin >> p >> q ;
    int d = 2 ;
    while (d * d <= p) {
        if (p % d == 0) {
            v1[nr] = d ;
            x = 0 ;
            while (p % d == 0) {
                p /= d ;
                x++ ;
            }
            v2[nr] = x * q ;
            nr++ ;
        }
        d++ ;
    }
    if (p > 1) {
        v1[nr] = p ;
        v2[nr] = q ;
        nr++ ;
    }
    int sol ;
    long long r = 0, r2, cate ;
    long long pas = 1LL << 45 ;
    while (pas > 0) {
        sol = 0;
        for (int i = 0; i < nr; i++) {
            cate = 0;
            r2 = r + pas;
            while (r2 > 0) {
                r2 /= v1[i];
                cate += r2 ;
            }
            if (cate < v2[i]) {
                i = nr ;
                sol = 1 ;
            }
        }
        if (sol != 0 ) {
           r += pas ;
        }
        pas >>= 1;
    }
    cout << r + 1 ;
    return 0;
}