Pagini recente » Cod sursa (job #865822) | Cod sursa (job #159297) | Cod sursa (job #1455959) | Cod sursa (job #1836375) | Cod sursa (job #2088095)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
const int N=1000000;
int ndp,dp[N],e[N],q,p;
int putere(long long n, int p)
{
int nr=0;
while(n>=p)
{
nr+=n/p;
n/=p;
}
return nr;
}
bool sedivide(long long n)
{
for(int i=1; i<=ndp; i++)
{
if(putere(n,dp[i])<e[i]*q)
return false;
}
return true;
}
int main()
{
int r,pas,d,k;
f>>p>>q;
pas=1<<28;
r=0;
d=2;
while(d*d<=p)
{
if(p%d==0)
{
dp[++ndp]=d;
k=0;
while(p%d==0)
{
p/=d;
k++;
}
}
}
if(p!=1)
{
dp[++ndp]=p;
e[ndp]=1;
}
while(pas!=0)
{
if(!sedivide(r+pas))
{
r+=pas;
}
pas/=2;
}
r++;
g<<r;
return 0;
}