Cod sursa(job #1492772)

Utilizator Etienne27Stefan Etienne27 Data 28 septembrie 2015 09:56:44
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <limits.h>
using namespace std;
FILE*fin=fopen("fact.in","r");
FILE*fout=fopen("fact.out","w");
int n;
int div5(int x)
{
    int i=5,s=0;
    while (i<=x)
    {
        s=s+x/i;
        i*=5;
    }
    return s;
}
int cautbin(int inf,int sup)
{
    //cout<<inf<<" "<<sup<<endl;
    if (inf<=sup)
    {
        int nr5 = (sup - inf) / 5;
        if (nr5>1)
        {
            int mij;
            if (nr5 % 2 == 0)
            {
                mij=inf + 5 * (nr5 / 2);
            }
            else
            {
                mij=inf + 5 * (nr5 / 2 + 1);
            }
            int z=div5(mij);
            //cout<<inf<<" "<<mij<<" "<<sup<<" "<<z<<endl;
            if (z==n)
                return mij;
            else
            {
                if (z<n)
                    return cautbin(mij,sup);
                else
                 //   return 0;
                   return cautbin(inf,mij);
            }
        }
        return -1;
    }
    else
        return -1;
}

int main()
{
    fscanf(fin,"%d",&n);
    if (n==0)
        fprintf(fout,"%d",1);
    else
        fprintf(fout,"%d",cautbin(0,INT_MAX));
    return 0;
}