Mai intai trebuie sa te autentifici.
Cod sursa(job #1384377)
| Utilizator | Data | 11 martie 2015 07:22:17 | |
|---|---|---|---|
| Problema | Factorial | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.77 kb |
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int findNumZeros(int x) {
// cout << x << " -> ";
int count = 0;
for(int i = 5; i <= x; i *= 5) {
// cout << count << " ";
count += x/i;
}
// cout << count << "\n";
return count;
}
int main() {
ifstream fin("fact.in");
ofstream fout("fact.out");
int P; fin >> P;
if(P == 0) {
fout << "1\n";
return 0;
}
int lo = 1, hi = 100000004;
while(lo <= hi) {
int mid = lo + (hi - lo)/2;
int numZeros = findNumZeros(mid);
if(numZeros == P) {
fout << mid - (mid%5) << '\n';
return 0;
}
else if(numZeros < P) {
lo = mid + 1;
}
else {
hi = mid - 1;
}
}
fout << lo - (lo%5) << '\n';
return 0;
}
