Pagini recente » Cod sursa (job #305511) | Cod sursa (job #2952897) | Cod sursa (job #947498) | Cod sursa (job #1239256) | Cod sursa (job #2449778)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long getA(int p,int q)
{
long long A = 1;
for(int i = 1; i <= q; i++)
A = A * p;
return A;
}
long long fact(long long number)
{
long long result = 1;
for(int i = 2; i <= number; i++)
result = result * i;
return result;
}
long long binarySearch(long long right, long long left, long long A)
{
long long half, taker, saver = 0;
while(right <= left)
{
half = (right + left) / 2;
taker = fact(half);
if(taker % A == 0)
{
saver = half;
left = half - 1;
}
else
{
right = half + 1;
}
}
return saver;
}
int main()
{
int p,q;
long long A;
fin >> p >> q;
A = getA(p,q);
fout << binarySearch(1,A,A) << "\n";
return 0;
}