Pagini recente » Cod sursa (job #297356) | Cod sursa (job #45646) | Cod sursa (job #100429) | Cod sursa (job #2136222) | Cod sursa (job #3173993)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
unsigned long long P, Q;
vector <pair <int,int>> puteri;
int verif(int x)
{
for(pair <int,int>a : puteri)
{
long long d = x/a.first;
if(d*(d+1)/2<a.second*Q)
return 0;
}
return 1;
}
int main()
{
fin >> P >> Q;
for(int i=2; i*i<=P; i++)
{
int exp = 0;
while(P%i==0)
{
exp++;
P/=i;
}
puteri.push_back(make_pair(i,exp));
}
if(P>1)
puteri.push_back(make_pair(P,1));
long long st = 1, dr = INT_MAX;
while(st<=dr)
{
long long mij = (st+dr)/2;
if(verif(mij))
dr = mij-1;
else
st = mij+1;
}
fout << st;
return 0;
}