Pagini recente » Cod sursa (job #936431) | Cod sursa (job #1362122) | Cod sursa (job #1379517) | Cod sursa (job #1059320) | Cod sursa (job #2615629)
#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;
}