Cod sursa(job #988586)

Utilizator lucianzr1Boaca Lucian lucianzr1 Data 23 august 2013 12:48:28
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <climits>
using namespace std;

int numar_zero(int nr)
{
    int s=0, a=5;
    while(a<=nr)
    {
        s=s+(nr/a);
        a=a*5;
    }
    return s;
}

int cautare(int a, int b, int p)
{
    int c, nr0, gasit=0;
    while(a<=b && gasit==0)
    {
        c=(a+b)/2;
        nr0=numar_zero(c);
        if(nr0==p)
            gasit=1;
        else if(nr0>p)
            b=c-1;
        else
            a=c+1;
    }
    if(gasit==1)
        return c;
    else
        return -1;
}

int scadere(int c, int p)
{
    int nr01, c1=c;
    nr01=numar_zero(c1);
    while(p==nr01)
    {
        c1--;
        nr01=numar_zero(c1);
    }
    return c1+1;
}

int main()
{
    fstream inputFile, outputFile;
    inputFile.open("fact.in", ios::in);
    outputFile.open("fact.out", ios::out);

    int a=1, b=INT_MAX, p, cifra;

    inputFile>>p;

    cifra=cautare(a, b, p);
    if(cifra!=-1)
        {
            cifra=scadere(cifra, p);
            outputFile<<cifra;
        }
    else
        outputFile<<-1;

    inputFile.close();
    outputFile.close();

    return 0;
}