Cod sursa(job #2615630)

Utilizator florescu.mirunaMiruna Stefania Florescu florescu.miruna Data 15 mai 2020 00:35:01
Problema Factorial Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<iostream>
#include <fstream>

using namespace std;

ifstream f("fact.in");
ofstream g("fact.out");

///Numarul de zerouri dintr-un numar factorial
///este reprezentat de suma puterilor lui 5 din numerele mai mici
///sau egale cu numarul
int numar_zerouri(int n)
{
    int p=5,suma=0;
    while(n/p > 0)
    {
        suma += n/p;
        p *= 5;
    }
    return suma;
}


int p,mijloc,st=1,dr=9000000000,ok=0;
///Cautam binar cel mai mic numar al carui factorial are p zerouri
int main()
{
    f>>p;

    while(st<=dr)
    {
        mijloc = (st+dr)/2;
        if(numar_zerouri(mijloc)== p) ///Scadem pana obtinem numarul cel mai mic
        {
            ok=1;
            while(numar_zerouri(mijloc-1)==p)
                mijloc--;
            break;
        }
        if(numar_zerouri(mijloc)<p)
            st = mijloc+1;
        if(numar_zerouri(mijloc)>p)
            dr = mijloc-1;
    }
    if(ok)
        g<<mijloc;
    else
        g<<-1;
    return 0;
}