Cod sursa(job #1100675)

Utilizator YoChinezuWeng Mihai Alexandru YoChinezu Data 7 februarie 2014 12:06:24
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

using namespace std;

long long baza,exp;

long long ok(long long n){
    long long e,cati;
    cati=0;
    e=baza;
    while(e<=n){
        cati+=n/e;
        e*=baza;
    }
    return cati;
}

long long binary(long long st,long long dr){
    long long med,last=-1,ss;
    while(st<=dr){
        med=st+(dr-st)/2;
        ss=ok(med);
        if(ss==exp){
            if(last==-1){
                last=med;
            }
            else
            if(last<med){
                last=med;
            }
            dr=med-1;
        }else
        if(exp>ss){
            st=med+1;
        }else{
            dr=med-1;
        }
    }
    return last;
}

int main(){
    freopen("gfact.in","r",stdin);
    freopen("gfact.out","w",stdout);

    scanf("%lld%lld",&baza,&exp);
    printf("%lld",binary(1,1LL<<60));

    return 0;
}