Cod sursa(job #1492768)

Utilizator Etienne27Stefan Etienne27 Data 28 septembrie 2015 09:53:59
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
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;

    int nr5 = (sup - inf) / 5;

    while (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)
                inf = mij;
            else
                sup = mij;
            nr5 = (sup - inf) / 5;
        }
    }
    return -1;
}

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