Cod sursa(job #2661566)

Utilizator YusyBossFares Yusuf YusyBoss Data 22 octombrie 2020 11:54:09
Problema GFact Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int maxfactprim(int n) {
  int i, max1;
  i = 2;
  while (i * i <= n && n > 1) {
    if (n % i == 0) {
      while (n % i == 0)
        n /= i;
      max1 = i;
    }
    i++;
  }
  if (n > 1)
    max1 = n;
  return max1;
}

int test(int x, int div) {
  int sol;
  sol = 0;
  while (x) {
    sol += x / div;
    x /= div;
  }
  return sol;
}

int cautbin(int div, int q) {
  int st, dr, sol, mij, nr;
  st = 1;
  dr = div * q;
  sol = -1;
  while (st <= dr) {
    mij = (st + dr) / 2;
    nr = test(mij, div);
    if (nr >= q) {
      sol = mij;
      dr = mij - 1;
    }
    else
      st = mij + 1;
  }
  return sol;
}

int main() {
  FILE *fin, *fout;
  int p, q, divmax;

  fin = fopen("gfact.in", "r");
  fscanf(fin, "%d%d", &p, &q);
  fclose( fin );

  divmax = maxfactprim(p);

  fout = fopen("gfact.out", "w");
  fprintf(fout, "%d", cautbin(divmax, q));
  fclose( fout );
  return 0;
}