Pagini recente » Cod sursa (job #915596) | Cod sursa (job #682961) | Cod sursa (job #2581561) | Cod sursa (job #3215582) | Cod sursa (job #2792601)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int p,q;
long long fact[20];
bool seDivide1(int nr){
int nrAparitii=0,cp=0;
while(nr%p==0){
nr/=p;
nrAparitii++;
}
if(nrAparitii>=q){
return true;
}
return false;
}
bool seDivide(int nr){
///check if fact[nr] se divide la
/// p power q
long long a = fact[nr];
int b = q;
while(b > 0)
{
if(a%p == 0)
{
b--;
a /=p;
}
else
break;
}
return (b == 0) ;
}
int main()
{
cin>>p>>q;
long long f=1;
fact[0] = 1;
fact[1] = 1;
for(int i = 2; i < 20 ; i++)
{
fact[i] = fact[i-1] *i;
//cout << fact[i] << " ";
}
//cout << endl;
int left=1,right=19,mid,sol=-1;
while(left<=right){
mid=(right+left)/2;
if(seDivide(mid)){
//cout << "sol : "<< mid << endl;
sol = mid;
right = mid-1;
}
else{
left=mid+1;
}
}
cout << sol;
return 0;
}