Cod sursa(job #1915601)

Utilizator Daria09Florea Daria Daria09 Data 8 martie 2017 21:46:47
Problema Frac Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("frac.in");
ofstream g("frac.out");
long long n,div[105],k,nrc;
void descompunere_n()
{
    long long d,p; p=0;
    while(n%2==0){p++; n/=2;} d=3; if(p!=0)div[++nrc]=2;
    while(d*d<=n&&n>1){p=0; while(n%d==0){p++; n/=d;} if(p!=0)div[++nrc]=d; d+=2; }
    if(n!=1)div[++nrc]=n;
}
void cautare_binara()
{
    long long st,mij,dr,aux,i,val,j;
    st=1; dr=(1LL<<61);
    while(st<=dr)
    {
        mij=(st+dr)/2;
        aux=mij;
        for(i=1;i<(1<<nrc);i++)
        {
            val=1;
            for(j=0;j<=nrc;j++)
                 if((i&(1<<j))>0)
                 val*=-div[j+1];
            aux+=mij/val;
        }
        if(aux<k)st=mij+1; else dr=mij-1;
    }
    g<<st;
}
int main()
{
    f>>n>>k;
    descompunere_n();
    cautare_binara();
    f.close();
    g.close();
    return 0;
}