Sucesión fractal
La sucesión fractal
0, 0, 1, 0, 2, 1, 3, 0, 4, 2, 5, 1, 6, 3, 7, 0, 8, 4, 9, 2, 10, 5, 11, 1, 12, 6, 13, 3, 14, 7, 15, ...
está construida de la siguiente forma:
- los términos pares forman la sucesión de los números naturales
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ...
- los términos impares forman la misma sucesión original
0, 0, 1, 0, 2, 1, 3, 0, 4, 2, 5, 1, 6, 3, 7, ...
Definir las funciones
sucFractal :: [Integer] sumaSucFractal :: Integer -> Integer
tales que
- sucFractal es la lista de los términos de la sucesión fractal. Por ejemplo,
take 20 sucFractal == [0,0,1,0,2,1,3,0,4,2,5,1,6,3,7,0,8,4,9,2] sucFractal !! 30 == 15 sucFractal !! (10^7) == 5000000
- (sumaSucFractal n) es la suma de los n primeros términos de la sucesión fractal. Por ejemplo,
sumaSucFractal 10 == 13 sumaSucFractal (10^5) == 1666617368 sumaSucFractal (10^10) == 16666666661668691669 sumaSucFractal (10^15) == 166666666666666166673722792954 sumaSucFractal (10^20) == 1666666666666666666616666684103392376198 length (show (sumaSucFractal (10^15000))) == 30000 sumaSucFractal (10^15000) `mod` (10^9) == 455972157