Pagini recente » Cod sursa (job #2126272) | Cod sursa (job #956777) | Cod sursa (job #8911) | Cod sursa (job #1077616) | Cod sursa (job #2296146)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int numara_zerouri(int nr)
{
int nr_zerouri=0;
while(nr>=5)
{
//in orice numar factorial numaruld de zerouri este minimul dintre numarul de
//elemente de 5 din descompunerea lui si de elemente de 2
nr_zerouri+=nr/5;//adun numarul de zerouri
nr=nr/5;//impart nr prin 5
}
return nr_zerouri;
}
int main()
{
ifstream fin("fact.in");
ofstream fout("fact.out");
int P,i,nr,rez=0;
fin>>P;
nr=int(pow(2,30));
while(nr!=0)
{
if(numara_zerouri(rez+nr)<P)//daca numarul de zerouri este mai mic decat P
rez=rez+nr; //rez creste
nr=nr/2;//nr se divide prin 2
}
if(numara_zerouri(rez+1)==P)
fout<<rez+1;//daca e egal cu P afisam rez+1
else
fout<<-1;//altfel nu exista un astfel de numar cerut
fin.close();
fout.close();
return 0;
}