Cod sursa(job #1123044)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 25 februarie 2014 22:15:29
Problema GFact Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>

using namespace std;

long long p,q,sol,pt,st,dr,i,j,mid,s,poz;

bool ok;

int main() {
    ifstream f("gfact.in");
    ofstream g("gfact.out");

    f>>p>>q;
    if(p==1) {
        g<<1;
        return 0;
    }

    for(i=2;i*i<=p;i++) {
        pt=0;
        ok=0;
        if(p%i==0)
            ok=1;
        while (p%i==0) {
           pt++;
           p/=i;
        }
        st=0;
        dr=(1LL<<62);
        if(ok)
            while(st<=dr) {
                s=0;
                mid=(st+dr)/2;
                for (j=i;j<=mid;j=j*i)
                    s+=mid/j;
                if (s<pt*q)
                    st=mid+1;
                else {
                    dr=mid-1;
                    poz=mid;
                }
            }
        if (sol<poz)
            sol=poz;
    }
    if(p!=1) {
        st=0;
        dr=(1LL<<62);
        while(st<=dr) {
            s=0;
            mid=(st+dr)/2;
            for (j=p;j<=mid;j=j*i)
                s+=mid/j;
            if (s<q)
                st=mid+1;
            else {
                dr=mid-1;
                poz=mid;
            }
        }
        if (sol<poz)
            sol=poz;
    }

    g<<sol<<"\n";


    return 0;
}