Cod sursa(job #2369712)

Utilizator iandavidroIan David Bocioaca iandavidro Data 6 martie 2019 08:55:32
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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;
}