Sucesiones pucelanas
Introducción
En la Olimpiada de Matemática del 2010 se planteó el siguiente problema:
Una sucesión pucelana es una sucesión creciente de 16 números impares positivos consecutivos, cuya suma es un cubo perfecto. ¿Cuántas sucesiones pucelanas tienen solamente números de tres cifras?
Para resolverlo se propone el siguiente ejercicio.
Enunciado
1 2 3 4 5 6 7 8 |
-- Definir la función -- pucelanasConNcifras :: Int -> [[Int]] -- tal que (pucelanasConNcifras n) es la lista de las sucesiones -- pucelanas que tienen solamente números de n cifras. Por ejemplo, -- ghci> pucelanasConNcifras 2 -- [[17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47]] -- Calcular cuántas sucesiones pucelanas tienen solamente números de -- tres cifras. |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
pucelanasConNcifras :: Int -> [[Int]] pucelanasConNcifras n = [[x,x+2..x+30] | x <- [10^(n-1)+1..10^n-31], esCubo (sum [x,x+2..x+30])] -- (esCubo n) se verifica si n es un cubo. Por ejemplo, -- esCubo 27 == True -- esCubo 28 == False esCubo x = y^3 == x where y = ceiling (fromIntegral x ** (1/3)) -- El cálculo es -- ghci> length (pucelanasConNcifras 3) -- 3 |
La solución no es correcta. Por ejemplo.
y, sin embargo, la sucesión [485,487,489,491,493,495,497,499,501,503,505,507,509,511,513,515] es pucelana ya que su suma es 8.000 que es el cubo de 20.
La solución no es correcta. Por ejemplo, la sucesión [1357,1359..1387] es una sucesión pucelana con 4 cifras que no está en las calculadas por (pucelanasConNcifras 4).