Cod sursa(job #515508)

Utilizator S7012MYPetru Trimbitas S7012MY Data 21 decembrie 2010 17:23:41
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;

const int m5[]={0,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125};

static inline int f(int nr) {
    int rez=0;
    for(int i=1;m5[i]<=nr; ++i )
        rez+=(nr/m5[i]);
    return rez;
}

int main()
{
    ifstream fi("fact.in");
    ofstream g("fact.out");
    int ls=1, ld=1000000000,p;
    fi>>p;
    if(0==p) g<<'1';
    else if(1==p) g<<'5';
    else {
        int m=(ls+ld)>>1,x;
        for(;ls<ld; m=(ls+ld)>>1) {
            x=f(m);
            if(x==p) {
                if(m%10>5) m-=(m%10-5);
                else m-=(m%10);
                g<<m;
                return 0;
            }else if(x>p) ld=m;
            else ls=m;
        }
    }
    return 0;
}