Cod sursa(job #1903375)

Utilizator mihai.alphamihai craciun mihai.alpha Data 5 martie 2017 10:59:05
Problema Frac Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <iostream>

using namespace std;

long long c[50],n,k,x,y,i,p,u,m,pr,j;

int main()  {
    ifstream f("frac.in");
    ofstream g("frac.out");
    f >> n >> k;
    for (i = 2;i * i <= n;i++)
        if (n % i==0)  {
            while (n % i == 0)
                n /= i;
            c[++x] = i;
        }
    if (n != 1)
        c[++x] = n;
    p = 1;u = (long long)1 << 61;
    while (p <= u)  {
        m = (p + u) / 2;y = m;
        for (i = 1;i < (1 << x);i++)  {
            pr = 1;
            for (j = 0;j <= x;j++)
                if ((i & (1 << j)) > 0)
                    pr *= -c[j + 1];
            y += m / pr;
        }
        if (y < k)
            p = m + 1;
        else u = m - 1;
    }
    g << p;
    f.close(), g.close();
    return 0;
}