Cod sursa(job #3219130)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 30 martie 2024 11:00:49
Problema Frac Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>

using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long n,p,nrf,fac[18];
int main()
{
    fin>>n>>p;
    long long ni=n;
    for(long long d=2;d*d<=n;d++)
    {
        if(n%d==0)
        {
            nrf++;
            fac[nrf]=d;

            while(n%d==0 && n!=1)
            {
                n=n/d;
            }

        }
    }
    if(n!=1)
    {
        nrf++;
        fac[nrf]=n;

    }


    long long st=1,dr=ni+5*ni/p,poz=0;

    while(st<=dr)
    {
        long long mid=(st+dr)/2;
        long long l=(1<<nrf)-1;

        long long s=0;

        for(long long i=1;i<=l;i++)
        {
            long long nrcif=0;
        long long prod=1;

         for(int j=0;j<nrf;j++)
         {

              if((i>>j)&1)
                {
                    nrcif++;
                    prod=prod*fac[j+1];
                }

         }

         long long coef=1;
              if(nrcif%2==0)
                    coef=-1;
              s+=coef*(mid/prod);

        }

        if(mid-s>=p )
        {
            poz=mid;
            dr=mid-1;

        }
        else
            st=mid+1;




    }
    fout<<poz<<" ";










    return 0;
}