Cod sursa(job #2067554)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 16 noiembrie 2017 16:36:07
Problema GFact Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
#define ll long long
ll f(ll x,ll prim)
{
    ll sol=0;
    while(x)
    {
        sol+=x/prim;
        x/=prim;
    }
    return sol;
}
struct fint
{
    int a,b;
};
fint v[55];
ll a,b,r=0,pas=1LL<<32,y=0,d=2;
ll slove(ll x)
{
    for(ll i=1;i<=y;i++)
        if(f(x,v[i].a)<v[i].b)
            return 0;
    return 1;
}
int main()
{
    cin>>a>>b;
    while(d*d<=a)
    {
        if(a%d==0)
        {
            y++;
            v[y].a=a;
            while(a%d==0)
            {
                v[y].b++;
                a/=d;
            }
            v[y].b*=b;
        }
        d++;
    }
    if(a!=1)
    {
        y++;
        v[y].a=a;
        v[y].b=b;
    }
    while(pas)
    {
        if(slove(r+pas)==0)
            r+=pas;
        pas/=2;
    }
    cout<<r+1;
    return 0;
}