Pagini recente » Cod sursa (job #1190554) | Clasamentul arhivei de probleme | Cod sursa (job #2636120) | Clasamentul arhivei de probleme | Cod sursa (job #1893017)
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream inputFile;
ofstream outputFile;
long p, power, auxiliar;
long n;
int difference = 0;
inputFile.open("fact.in",ios::in);
if(!inputFile.is_open())
{
cout<<"Eroare la deschiderea fisierului de input\n";
return -1;
}
inputFile>>p;
/*
* Pentru a determina numarul n al carui factorial are exact p zerouri vom determina
* cate cifre de 5 ne furnizeaza numarul n, intrucat combinatia 2*5 ne va oferi o cifra
* de 0.
*/
n = p * 5;
/*
* determinam cea mai mare putere a lui 5 cuprinsa in n.
*/
auxiliar = n;
power = 1;
while(auxiliar / 5 != 0)
{
auxiliar/=5;
power*=5;
}
while(power != 5)
{
difference=difference + (n/power)*5;
power/=5;
}
outputFile.open("fact.out",ios::out);
if(outputFile.is_open()) {
outputFile << n - difference << "\n";
}
else
{
cout<<"Eroare la deschiderea fisierului de output!";
return -1;
}
inputFile.close();
outputFile.close();
}