I1M2012: Último dígito del producto de números de Fermat

En la segunda parte de 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 (IMO) de 1971. Su enunciado es

Sea x_n = 2^{2^n} + 1 y sea m el producto de x_2, x_3, \dots, x_{1971}. Calcular el último dígito de m.

La primera definición es la traducción directa del enunciado

donde (x n) es el n-ésimo término de la sucesión

y (ultimo x) es el último dígito de x

Aunque la primera solución es simple, tiene un inconveniente: Haskell no puede calcular números tan grandes. Una estrategia para resolverlo es considerar casos menores y buscar alguna regularidad. Para ello, generalizamos la primera solución sustituyendo 1971 por una variable.

Con la 2ª definición calculamos el último dígito de los primeros productos

Se observa que el resultado está formado por la repetición de los números 7, 9, 3 y 1. A partir de la observación conjeturamos una nueva definición

Podemos comprobar, para pequeños valores, que las 2 definiciones son equivalentes

Además, con la 3ª definición se puede calcular la solución del problema original

es decir, el último dígito del producto x_2x_3 \dots x_{1971} es 9.

Para justificar la solución, hay que demostrar que la definición sol3 es correcta; es decir, que los últimos dígitos de los productos forman la sucesión 7, 9, 3, 1, 7, 9, 3, 1, 7, 9, 3, 1, 7, 9, 3, 1, 7, 9, 3, … Para ello, observamos el último dígito de los x_n

Se observa que todos son 7. Esto justifica la sucesión de los productos, ya que cada término es el último dígito del producto del anterior por 7. Además, permite una nueva definición de la solución por recursión

Podemos comprobar, para pequeños valores, que es equivalente a la anterior

Para terminar, sólo queda demostrar que si n>1, entonces el último dígito de 2^{2^n} + 1 es 7 o, equivalentemente, que el último dígito de 2^{2^n} es 6. Lo que se tiene ya que 2^{2^n} = 2^{2\cdot2^{n-1}} = (2^2)^{2^{n-1}} = 4^{2^{n-1}}. Además, como n>1 se tiene que 2^{n-1} es un número par mayor que 0 y, por tanto, el último dígito de 4^{2^{n-1}} es 6.

I1M2012: Definiciones por recursión (3)

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas hemos concluido el estudio de las definiciones por recursión en Haskell. Concretamente, hemos visto ejemplos de recursión recursión múltiple y de recursión mutua. También hemos comentado el método para construir funciones recursivas.

En la segunda parte hemos comentado la solución del problema 4 (último dígito del producto de números de Fermat).

Las transparencias usadas en la clase son las comprendidas entre las páginas 14 y 24 del tema 6:
Read More “I1M2012: Definiciones por recursión (3)”

LI2012: Ejercicios de lógica proposicional

En la clase de hoy del curso Lógica Informática hemos comentado los tipos de ejercicios de los temas de lógica proposicional:

  1. Sintaxis y semántica de la lógica proposicional.
  2. Deducción natural proposicional.
  3. Tableros semánticos proposicionales.
  4. Formas normales.
  5. Resolución proposicional.

Hemos comentado las soluciones de los ejercicios propuestos de los temas 4 (formas normales) y 6 (algoritmo DPLL).