Cod sursa(job #3212393)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 11 martie 2024 18:01:54
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;
#ifndef LOCAL
ifstream in("gfact.in");
ofstream out("gfact.out");
#define cin in
#define cout out
#endif // LOCAL
vector <pair<int, int>> puteri;
bool ok( int e ){
    for( auto x : puteri ){
        int cnt = 0;
        int put = x.first;
        while( put <= e ){
            cnt += e/put;
            put *= x.first;
        }
        if( cnt < x.second )
            return 0;
    }
    return 1;
}
int32_t main()
{
    int n, q;
    cin >> n >> q;
    for( int d = 2; d * d <= n; d++ ){
        int cnt = 0;
        while( n % d == 0 ){
            n /= d;
            cnt++;
        }
        if( cnt )
            puteri.push_back({d, cnt*q});
    }
    if( n > 1 )
        puteri.push_back({n, q});

    int st = 1, dr = 2e9 * 30000 + 10, sol;
    while( st <= dr ){
        int mij = (st+dr)/2;
        if( ok(mij) ){
            sol = mij;
            dr = mij - 1;
        }
        else
            st = mij+1;
    }
    cout << sol;
    return 0;
}