Cod sursa(job #3295224)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 3 mai 2025 17:38:30
Problema Frac Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("frac.in");
ofstream cout("frac.out");

#define int long long

vector<int> div1;

signed main()
{
    int n,k,i,j,st,dr,mij,y,prod;
    cin>>n>>k;
    for(i=2;i*i<=n;i++){
        if(n%i==0){
            while(n%i==0) n/=i;
            div1.push_back(i);
        }
    }
    if(n!=1) div1.push_back(n);

    st=1;dr=(1ll)<<61;
    while(st<=dr){
        mij=(st+dr)/2;y=mij;
        for(i=1;i<(1<<(div1.size()));i++){
            prod=1;
            for(j=0;j<div1.size();j++){
                if(i&(1<<j)) prod*=-div1[j];
            }
            y+=mij/prod;
        }
        if(y<k) st=mij+1;
        else dr=mij-1;
    }
    cout<<st;

    return 0;
}