Cod sursa(job #1500262)

Utilizator gbibBacotiu Gabi gbib Data 11 octombrie 2015 17:45:05
Problema GFact Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("gfact.in");
ofstream out("gfact.out");
int nz(int n,int c)
{
    int p=c,sol=0;
    while(p<=n)
    {
        sol+=(n/p);
        p*=c;
    }
    return sol;
}

int bs(int fact, int put)
{
    int s=1;
    int d=2000000001;
    int k,mij;
    while(s<=d)
    {
        mij=(s+d)/2;
        k=nz(mij,fact);
        if(k>=put)
        {
            d=mij-1;
        }
        else
        {
            s=mij+1;
        }
    }
    mij=(s+d)/2;
    k=nz(mij,fact);
    if(k<put)
    {
        mij++;
    }
    return mij;
}

int main()
{int p,q,i;
in>>p>>q;
int cp=p,d=2,mx=0;
while(cp!=1)
{
    int nr=0;
    while(cp%d==0)
    {
        nr++;
        cp/=d;
    }
    mx=max(mx,bs(d,nr+q-1));

    d++;
}
    out<<mx;
    return 0;
}