Cod sursa(job #2280625)

Utilizator RaduNRadu Negovan RaduN Data 10 noiembrie 2018 22:08:31
Problema GFact Scor 0
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 div[502] ;
int put[502] ;
int p, q ;
bool ver(long long x) {
    long long s=0, k ;
    int i;
    for (i=1; i<=div[0]; i++) {
        s=0 ;
        k=div[i] ;
        while (x/k>0) {
            s+=x/k;
            k*=div[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)) {
            div[++div[0]]=d;
            while (!(p%d)){
                p/=d;
                put[div[0]]++;
            }
        }
        d++;
    }
    if (p>1) {
        div[++div[0]]=p;
        put[div[0]]++;
    }
    g<<fact(p, q);
    return 0;
}