Cod sursa(job #953572)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 26 mai 2013 17:14:20
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

unsigned f(unsigned n){  //f(n) = in cate 0-uri se temina n!
    unsigned a=5,ret=0;
    while(n/a>0){
        ret+=n/a;
        a*=5;
    }
    return ret;
}


int main(){
    std::ifstream fin("fact.in");
    std::ofstream fout("fact.out");

    unsigned P;
    fin>>P;
    if(P==0) fout<<"1\n";
    else{
        unsigned max,min,mid,temp;
        max = 5*P;
        min = 1;
        bool talal=false;
        while(min<=max && !talal){
            mid = min + (max-min)/2;
            temp=f(mid);
            if(temp<P) min=mid+1;
            else if(temp==P){ talal=true; }
            else max=mid-1;
        }
        if(!talal) fout<<"-1\n";
        else{
            while(f(mid-1)==P) mid--;
            fout<<mid<<'\n';
        }
    }
}