Cod sursa(job #2613305)

Utilizator Katherine456719Swan Katherine Katherine456719 Data 9 mai 2020 15:43:59
Problema Frac Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream f("frac.in");
ofstream g ("frac.out");
long long c[51];
int main()
{
    long long n,p;
    f>>n>>p;
    int k=0;
    for(int i=2; i*i<=n; i++)
        if(n%i==0)
        {
            while(n%i==0)
                n/=i;
            c[++k]=i;
        }
    if(n!=1)
        c[++k]=n;
    long long in=1,fin=1LL<<61;
    while(in<=fin)
    {
        long long r, m=(in+fin)/2;
        r=m;
        for(int i=1; i<(1<<k); ++i)
        {
            long long pr=1;
            for(int j=0; j<=k; ++j)
                if(((1<<j) & i)>0)
                    pr*=-c[j+1];
            r+=m/pr;
        }
        if(r<p)
            in=m+1;
        else
            fin=m-1;
    }
    g<<in;
    return 0;
}