Pagini recente » Cod sursa (job #850617) | Cod sursa (job #1266662) | Cod sursa (job #1390739) | Cod sursa (job #733779) | Cod sursa (job #2792606)
#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 = 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=10000;
while(left<=right){
mid=(right+left)/2;
if(seDivide(mid)){
//cout << "sol : "<< mid << endl;
sol = min(sol,mid);
right = mid-1;
}
else{
left=mid+1;
}
}
cout << sol;
return 0;
}