I1M2012: Ceros finales del factorial

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentado la solución con Haskell de un problema propuesto para la Olimpiada Internacional de Matemáticas de 1987 cuyo enunciado es

”Calcular el menor número natural n tal que n! termina exactamente en 1987 ceros.”

Resolverlo con Haskell.

Para resolverlo, empezamos definiendo la función cerosDelFactorial tal que (cerosDelFactorial n) es el número de ceros en que termina el factorial de n. Por ejemplo,

Presentamos dos definiciones la primera es

donde (ceros n) es el número de ceros en los que termina el número n. Por ejemplo,

y (factorial n) es el factorial n. Por ejemplo,

La segunda es

Se puede comprobar la equivalencia de las dos definiciones

y que la segunda es más eficiente

En lo que sigue, usaremos la segunda definición

A continuación definimos la función menorFactorial tal que (menorFactorial m) es el menor número cuyo factorial termina en m ceros exactamente. Por ejemplo,

Finalmente definimos la solución del problema; es decir, el menor número natural n tal que n! termina exactamente en 1987 ceros.

El cálculo de la solución es