Cod sursa(job #2067540)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 16 noiembrie 2017 16:25:47
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;


long long legendre(long long n, int p) {
    long long ans=0;
    while (n)
        n/=p,ans+=n;
    return ans;
}

int main()
{
    ifstream cin("gfact.in");
    ofstream cout("gfact.out");
    int p,q,k,l,i;
    cin>>p>>q;
    for (i=2;i*i<=p;i++)
        if (p%i==0) {
            k=i,l=0;
            while (p%i==0)
                p/=i,l++;
        }
    if (p>1)
        k=p,l=1;
    q*=l;
    long long st=2,dr=1LL*k*q,ans=dr+1;
    while (st<=dr) {
        long long mid=(st+dr)>>1;
        if (legendre(mid,k)>=q)
            ans=mid,dr=mid-1;
        else
            st=mid+1;
    }
    cout<<ans<<'\n';
    return 0;
}