Cod sursa(job #1013811)
| Utilizator | Data | 21 octombrie 2013 19:15:23 | |
|---|---|---|---|
| Problema | Factorial | Scor | 45 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include<fstream>
using namespace std;
int n;
ifstream f("fact.in");
ofstream g("fact.out");
int check(int nr)
{
int fives = 0;
int c = 5;
while(c <= nr)
{
fives += nr/c;
c = c * 5;
}
return fives;
}
int search(int start, int end)
{
if(end < start) return -1;
int nr = (start + end) / 2;
int fives = check(nr);
if(fives == n && nr%5 == 0) return nr;
return (fives > n) ? search(start, nr-1) : search(nr+1, end);
}
int main()
{
f>>n;
if(n == 0) g<<1;
else g<<search(1, 5*n)<<endl;
return 0;
}