Pagini recente » Cod sursa (job #6522) | Cod sursa (job #580252) | Cod sursa (job #92717) | Cod sursa (job #1632490) | Cod sursa (job #2082699)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("gact.in");
ofstream fout("gact.out");
int nr_0(int);
long long putere(long long,int);
bool sedivide(long long);
const int lim=45;
int d[15],p[15],ndp=0,x,y;
int main()
{
int a=2;
fin>>x>>y;
while(a*a<=x)
{
if(x%a==0)
{
d[ndp]=a;
while(x%a==0)
{
p[ndp]++;
x/=a;
}
ndp++;
}
a++;
}
if(x>1)
{
d[ndp]=x;
p[ndp]=1;
ndp++;
}
long long pas=1LL<<lim,r=0;
while(pas)
{
if(!sedivide(r+pas)) r+=pas;
pas/=2;
}
r++;
fout<<r;
return 0;
}
long long putere(long long n,int p)
{
long long nr=0;
while(n>=p) nr+=(n/=p);
return nr;
}
bool sedivide(long long r)
{
for(int i=0; i<ndp; i++)
{
if(putere(r,d[i])<p[i]*y)
{
return false;
}
}
return true;
}