Para contestar rapidito y casi sin pensar
El enunciado del problema de hoy de Números y algo más …, titulado Para contestar rapidito y casi sin pensar, es el siguiente
¿Cuál es último dígito de la suma de las cuartas potencias de los primeros 100 números enteros positivos?
A partir del problema he escrito la siguiente relación de ejercicios para la asignatura de Informática de 1º del Grado en Matemáticas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
-- --------------------------------------------------------------------- -- Librerías auxiliares -- -- --------------------------------------------------------------------- import Test.QuickCheck -- --------------------------------------------------------------------- -- Ejercicio 1. Definir la función -- ultimaCifra :: Integer -> Integer -- tal que (ultimaCifra x) es la última cifra del número entero x. Por -- ejemplo, -- ultimaCifra 234 == 4 -- ultimaCifra (-234) == 4 -- --------------------------------------------------------------------- ultimaCifra :: Integer -> Integer ultimaCifra x = abs (rem x 10) -- --------------------------------------------------------------------- -- Ejercicio 2. Definir la función -- ultimaCifraSumaPotencias :: Integer -> Integer -> Integer -- tal que (ultimaCifraSumaPotencias m n) es la última cifra de las -- m-ésimas potencias de los primeros n números enteros positivos. Por -- ejemplo, -- ultimaCifraSumaPotencias 2 6 == 1 -- --------------------------------------------------------------------- ultimaCifraSumaPotencias :: Integer -> Integer -> Integer ultimaCifraSumaPotencias m n = ultimaCifra (sum [x^m | x <- [1..n]]) -- --------------------------------------------------------------------- -- Ejercicio 3. Calcular, usando ultimaCifraSumaPotencias, la respuesta -- del problema. -- --------------------------------------------------------------------- -- El cálculo es -- ghci> ultimaCifraSumaPotencias 4 100 -- 0 -- --------------------------------------------------------------------- -- Ejercicio 4. Comprobar con QuickCheck que, si m y n son números -- naturales, entonces (ultimaCifraSumaPotencias m (10*n)) es igual a -- ultimaCifra (x * ultimaCifraSumaPotencias m 10) -- --------------------------------------------------------------------- -- La propiedad es prop_ultimaCifra :: Integer -> Integer -> Property prop_ultimaCifra m n = m >= 0 && n >= 0 ==> ultimaCifraSumaPotencias m (10*n) == ultimaCifra (n * ultimaCifraSumaPotencias m 10) -- La comprobación es -- ghci> quickCheck prop_ultimaCifra -- +++ OK, passed 100 tests. -- --------------------------------------------------------------------- -- Ejercicio 5. Comprobar con QuickCheck que, si m y n son números -- naturales, entonces la última cifra de la suma de las m-ésimas -- potencias de los primeros 100*n números enteros positivos es 0. -- --------------------------------------------------------------------- -- La propiedad es prop_ultimaCifra' :: Integer -> Integer -> Property prop_ultimaCifra' m n = m >= 0 && n >= 0 ==> ultimaCifraSumaPotencias m (100*n) == 0 -- La comprobación es -- ghci> quickCheck prop_ultimaCifra' -- +++ OK, passed 100 tests. |