Cod sursa(job #2878567)

Utilizator rares89_Dumitriu Rares rares89_ Data 27 martie 2022 12:08:54
Problema Frac Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("frac.in");
ofstream fout("frac.out");

long long int n, p;

long long int fr(long long int x, long long int n) {
    // nr de frac ireductibile cu numitorul n sunt <= cu (x / n)
    // <=> cate nr prime intre ele cu n sunt mai mici sau egale cu x
    long long int d = 2, nr = 0;
    while(n > 1) {
        int p = 0;
        while(n % d == 0) {
            p++;
            n /= d;
        }
        if(p > 0) {
            nr += (x / d);
        }
        d++;
        if(d * d > n) {
            d = n;
        }
    }
    return x - (nr - x / 6 - x / 10 - x / 15 + x / 30);
}

int main() {
    fin >> n >> p;
    fin.close();
    long long int st = 1, dr = (1LL << 62);
    while(st <= dr) {
        long long int mid = st + (dr - st) / 2;
        if(fr(mid, n) > p) {
            dr = mid - 1;
        } else {
            st = mid + 1;
        }
    }
    fout << st;
    return 0;
}