Cod sursa(job #2891226)

Utilizator hobbitczxdumnezEU hobbitczx Data 17 aprilie 2022 21:30:58
Problema GFact Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

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

long long d = 2;
int p, q, ans, n;
vector<pair<int, int>>v;

bool solve (int x) {
   for (int i=0; i<n; i++) {
      int n = x, cnt = 0, dv = v[i].first;
      while (n > 0) {
         cnt += n / dv;
         n = n / dv;
      }
      if (cnt < v[i].second) {
         return false;
      }
   }
   return true;
}

int main() {
   ios_base::sync_with_stdio(false);
   fin.tie(NULL);
   fin >> p >> q;
   while (p > 1) {
      int z = 0;
      while (p % d == 0) {
         p = p / d;
         z += 1;
      }
      if (z > 0) {
         v.push_back(make_pair(d, z * q));
      }
      d += 1;
      if (d * d > p && p > 1) {
         d = p;
      }
   }
   n = v.size();
   int st = 0, dr = 2e9;
   while (st <= dr) {
      int mij = st + (dr - st) / 2;
      if (solve(mij)) {
         ans = mij;
         dr = mij - 1;
      }
      else {
         st = mij + 1;
      }
   }
   fout << ans;
}