Pagini recente » Cod sursa (job #1708902) | Cod sursa (job #1457733) | Cod sursa (job #2566376) | Cod sursa (job #1783565) | Cod sursa (job #3174002)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
unsigned long long P, Q;
vector <pair <unsigned long long,unsigned long long>> puteri;
int verif(unsigned long long x)
{
for(pair <int,int>a : puteri)
{
unsigned long long d = x/a.first;
if(d*(d+1)/2<a.second*Q)
return 0;
}
return 1;
}
int main()
{
fin >> P >> Q;
for(unsigned long long i=2; i*i<=P; i++)
{
unsigned long long 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));
unsigned long long st = 1, dr = LLONG_MAX;
while(st<=dr)
{
unsigned long long mij = (st+dr)/2;
if(verif(mij))
dr = mij-1;
else
st = mij+1;
}
fout << st;
return 0;
}