Cod sursa(job #1013816)
| Utilizator | Data | 21 octombrie 2013 19:18:31 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| 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)
{
int nr = (start + end) / 2;
if(end < start) return -1;
int fives = check(nr);
if(fives == n && nr%5 == 0) return nr;
return (fives < n) ? search(nr+1, end) : search(start, nr-1);
}
int main()
{
f>>n;
if(n == 0) g<<1;
else g<<search(1, 5*n)<<endl;
return 0;
}