Pagini recente » Cod sursa (job #1365408) | Cod sursa (job #3161083) | Cod sursa (job #2908861) | Cod sursa (job #3225415) | Cod sursa (job #3152504)
#include <iostream>
#include <fstream>
using namespace std;
int countTrailingZeros(int n) {
int count = 0;
while (n % 10 == 0) {
count++;
n /= 10;
}
return count;
}
int findSmallestN(int p) {
int left = 1, right = p * 5; // Pornim cu intervalul [1, 5*P] pentru că 5! are 1 zerou la final și oricare alt factorial mai mare va avea cel puțin un zero în plus.
while (left < right) {
int mid = (left + right) / 2;
int zeros = 0;
int temp = mid;
while (temp > 0) {
temp /= 5;
zeros += temp;
}
if (zeros == p) {
return mid;
} else if (zeros < p) {
left = mid + 1;
} else {
right = mid;
}
}
return -1; // Dacă nu există un astfel de N
}
int main() {
ifstream fin("fact.in");
ofstream fout("fact.out");
int p;
fin >> p;
int result = findSmallestN(p);
fout << result << endl;
fin.close();
fout.close();
return 0;
}