Cod sursa(job #2372088)

Utilizator Carol_LucaCarol Luca Carol_Luca Data 6 martie 2019 21:21:15
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>

#include <algorithm>

using namespace std;

ifstream cin("gfact.in");

ofstream cout("gfact.out");

const int L=45;

const int ND=10;

int p,q,d[ND],e[ND],nd;

void descompunere(int n)

{

   int dv=2;

   while(dv*dv<=n)

   {

     if(n%dv==0)

     {

       d[nd]=dv;

       while(n%dv==0)

       {

         e[nd]++;

         n/=dv;

       }

       nd++;

     }

     dv++;

   }

   if(n>1)

   {

     d[nd]=n;

     e[nd++]=1;

   }

}

long long putere(long long n,int p)

{

  long long r=0;

  while(n>=p)

  {

    r+=n/p;

    n/=p;

  }

  return r;

}

bool div(long long n)

{

  int i;

  for(i=0;i<nd;i++)

  {

    if(putere(n,d[i])<e[i]*q)

    {

      return false;

    }

  }

  return true;

}

long long b()

{

  long long pas=1LL << L,r=0;

  while(pas!=0)

  {

    if(!div(r+pas))

    {

      r+=pas;

    }

    pas/=2;

  }

  r++;

  return r;

}

int f[10000];

int main()

{

  int i;

    cin>>p>>q;

    descompunere(p);

    cout<<b();

    return 0;

}