Cod sursa(job #3173993)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 24 noiembrie 2023 09:16:29
Problema GFact Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#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;
}