Pagini recente » Cod sursa (job #1737372) | Cod sursa (job #194856) | Monitorul de evaluare | Statistici Neagoe Ionut Alexandru (neagoe.ionut) | Cod sursa (job #2008529)
#include <fstream>
using namespace std;
int zerouri(int x){
int c = 0;
while (x % 5 == 0){
x /= 5;
c++;
}
return c;
}
int numaratoare(int x){
int c = 0;
for (int i = 5; i <= x; i += 5)
c += zerouri(i);
return c;
}
int factorial(int p){
int n, st, dr;
if (p == 0)
return 1;
else{
st = 0; dr = 5 * p;
while (st <= dr){
n = (st + dr) / 2;
if (p == numaratoare(n)){
while (n % 5 != 0)
n--;
return n;
}
if (p < numaratoare(n))
dr = n - 1;
else
st = n + 1;
}
return -1;
}
}
int main(){
int p;
ifstream citire ("fact.in");
citire >> p;
citire.close();
ofstream afisare ("fact.out");
afisare << factorial(p);
afisare.close();
return 0;
}