Menor número divisible por 10^n cuyos dígitos suman n
Definir la función
1 |
menor :: Integer -> Integer |
tal que (menor n) es el menor número divisible por 10^n cuyos dígitos suman n. Por ejemplo,
1 2 |
menor 5 == 500000 menor 20 == 29900000000000000000000 |
Soluciones
1 2 3 4 5 6 7 |
import Data.List (genericLength, genericReplicate) menor :: Integer -> Integer menor n = read (show (n-9*a) ++ genericReplicate a '9' ++ genericReplicate n '0') where a = n `div` 9 |
Una idea parecida a la tuya usando un poco la librería Control.Applicative :)