Cod sursa(job #709151)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 7 martie 2012 18:32:27
Problema Frac Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#define LE 100000
#define inf 1200000000000
#define ll long long
using namespace std;
ll i,j,n,P,k,v[LE],N;
ll XOX(ll val) {
    ll TOT=0,FACT;
    for(i=1; i<=k; ++i) {
        TOT+=val/v[i];
        FACT=v[i]*v[j];
        for(j=1; j<i; ++j)  TOT-=val/FACT;
        }
    return TOT;
    }

ll caut() {
    ll step=0,poz=0;
    for(  step=1; step<=20; step*=2);
    for(  poz=0; step; step/=2)
        if (poz+step-XOX(poz+step)<P) poz+=step;
    return poz+1;
    }
int main() {
    freopen("frac.in","r",stdin);
    freopen("frac.out","w",stdout);
    scanf("%lld%lld",&n,&P);

    for(i=2,N=n; i*i<n; ++i) if (N%i==0) {
            v[++k]=i;
            while (N%i==0) N/=i;
            }
    if (N!=1) v[++k]=N;

 printf("%lld\n",caut());
    return 0;
    }