Cod sursa(job #1149398)

Utilizator laurentiudLaurentiu Diaconu laurentiud Data 21 martie 2014 20:11:36
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;
#define NMax 1000000000
ifstream in("fact.in");
ofstream out("fact.out");
int p;
int power_of_5(int x)
{
    int a=5,count=0;
    while(x/a)
    {
        count=count+x/a;
        a*=5;
    }
    return count;
}
void find_it(int p)
{
    int provisional_power;
    if (p==0) out<<1;
    else
    {
        int infLim=1,supLim=NMax,middle;
        bool stay_still=false;
        while(infLim<=supLim && !stay_still)
        {
            middle=(infLim+supLim)/2;
            provisional_power=power_of_5(middle);
            if(provisional_power<p) infLim=middle+1;
                else if(provisional_power>p) supLim=middle-1;
                    else stay_still=true;;
        }
        if (stay_still)
        {
            while(middle%5) middle--;
            out<<middle;
        }
            else out<<-1;
    }
}
int main ()
{
    in>>p;
    find_it(p);
    return 0;
}