Cod sursa(job #2528624)

Utilizator davalxdavid alex davalx Data 22 ianuarie 2020 11:35:08
Problema GFact Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>



using namespace std;



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

const long long VM = 10000000000000;
pair <long long, long long> v [100000];

long long n;
long long putere (long long x, long long p) {

  long long r;

  r = 0;

  while (x >= p) {

    x /= p;

    r += x;

  }

  return r;

}
bool bun (long long x) {

  long long b, e;

  for (long long i = 1; i <= n; i ++) {

    b = v [i].first;

    e = v [i].second;

    if (putere (x, b) < e)

      return false;

  }

  return true;

}
long long cbin () {

  long long st, dr, m;

  st = 1; dr = VM;

  while (st < dr) {

    m = (st + dr) / 2;

    if (bun (m))

      dr = m;

    else

      st = m + 1;

  }

  return st;

}

int main() {

  long long p, q, r, put;
  in >> p >> q;
  n = 0;
  for (long long d = 2; d * d <= p; d ++) {
    n ++; put = 0;
    while (p % d == 0) {
      p /= d;
      put ++;
    }
    if (put > 0) {
      v [n].first = d;
      v [n].second = put * q;
    }
  }
  if (p > 1) {
    n ++;
    v[n].first = p;
	v[n].second = q;
  }
  r = cbin ();
  out << r;
  return 0;
}