Cod sursa(job #1253604)

Utilizator eleonoracChiru Eleonora Ioana eleonorac Data 1 noiembrie 2014 15:33:34
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#define MAX 100000000
using namespace std;
int maxim(int a,int b)
{
    if(a>b)
        return a;
    return b;
}
int f(int m)
{
    while(m%5)m--;
    return maxim(m,1);
}
int numarzerouri(long int c)
{
   int b=5,nrz=0;
    while(c/b)nrz+=c/b,b*=5;
    return nrz;

}
int main()
{

      int p,nr;
      int st,dr,m;
    ifstream fin("factorial.in");
    ofstream fout("factorial.out");
    fin>>p;// P cifre de 0 pt n!

    st=1;
    dr=MAX;
    while(st<=dr)
    {
        m=(st+dr)>>1;
        // se imparte numarul la 2. m este deplasat la dr cu 1
        /*de ex 10 in baza 10 convertit in baza 2 este 1010 10>>1 este echivalent co 101 in baza 2 adica 5 in baza 10*/
        nr=numarzerouri(m);
        if(nr==p)
        {
            fout<<f(m);
            return 0;
        }
        else if(nr>p)dr=m-1;
        else st=m+1;

    }

    fin.close();
    fout.close();
    return 0;
}