Cod sursa(job #2296146)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 4 decembrie 2018 15:11:07
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
	
#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;
}