Cod sursa(job #2454753)

Utilizator Simon2712Simon Slanina Simon2712 Data 9 septembrie 2019 20:16:31
Problema GFact Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int baz[101];
long long exp[101];
int main()
{
    int p,q,i,put,stop,nr=0;
    long long dr,st,mijl,rez,nrr;
    cin>>p>>q;
    for(i=2;i*i<=p;i++)
    {
      if(p%i==0)
      {
        put=0;
        while(p%i==0)
        {
          put++;
          p/=i;
        }
        nr++;
        baz[nr]=i;
        exp[nr]=put*q;
      }
    }
    if(p)
    {
      nr++;
      baz[nr]=p;
      exp[nr]=q;
    }
    st=1;
    dr=1000000000000;
    while(st<=dr)
    {
      mijl=(st+dr)/2;
      stop=1;
      for(i=1;i<=nr && stop;i++)
      {
        put=baz[i];
        nrr=0;
        while(put<=mijl && nrr<=exp[i]){
          nrr+=mijl/put;
          put*=baz[i];
        }
        if(nrr<exp[i])
          stop=0;
      }
      if(stop==0)
        st=mijl+1;
      else
      {
        rez=mijl;
        dr=mijl-1;
      }
    }
    cout<<rez;
    return 0;
}