Cod sursa(job #1649745)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 11 martie 2016 14:53:54
Problema GFact Scor 95
Compilator c Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
const long long lim = 1LL << 50;
long long putere(long long n,long long k){
    long long nr=0,k0=k;
    while(n/k!=0){
        nr+=n/k;
        k*=k0;
    }
    return nr;
}
long long cautbin(long long k,long long put){
     long long i=0,pas=lim;
     while(pas!=0){
        if(putere(i+pas,k)<put)
            i+=pas;
        pas/=2;
    }
    return i+1;
 }
int main(){
    FILE *fin,*fout;
    fin=fopen("gfact.in","r");
    fout=fopen("gfact.out","w");
    long long i=2,j,baza,exp,rasp=0;
    fscanf(fin,"%lld%lld",&baza,&exp);
    while(i*i<=baza){
        j=0;
        while(baza%i==0){
            baza/=i;
            j++;
        }
        j=j*exp;
        if(cautbin(i,j)>rasp)
            rasp=cautbin(i,j);
        i++;
    }
    if(baza!=1){
        j=exp;
        if(cautbin(baza,j)>rasp)
            rasp=cautbin(baza,j);
    }
    fprintf(fout,"%lld",rasp);
    fclose(fin);
    fclose(fout);
    return 0;
}