Cod sursa(job #2282777)

Utilizator RaduNRadu Negovan RaduN Data 14 noiembrie 2018 15:26:52
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int divi[502];
int put[502];
int p, q;
bool ver(long long x) {
    long long s=0, k ;
    int i;
    for (i=1; i<=divi[0]; i++) {
        s=0;
        k=divi[i];
        while (x/k>0) {
            s+=x/k;
            k*=divi[i];
        }
        if (s<put[i]*q)
            return 0;
    }
    return 1;
}
long long fact(int a, int b) {
    long long r=0, pas=(long long)1<<60;
    while (pas!=0) {
        if (!ver(r+pas)){
            r+=pas;
        }
        pas/=2;
    }
    return r+1;
}
int main() {
    f>>p>>q;
    int d=2;
    while (d*d<=p) {
        if (!(p%d)) {
            divi[++divi[0]]=d;
            while (!(p%d)){
                p/=d;
                put[divi[0]]++;
            }
        }
        d++;
    }
    if (p>1) {
        divi[++divi[0]]=p;
        put[divi[0]]++;
    }
    g<<fact(p, q);
    return 0;
}