Saltar al contenido

Las cucharas del abuelo

Enunciado

El abuelo Anselmo va a hornear el pan de la receta de su madre, pero perdió la taza medidora. Le quedan unas cucharas de distintos tamaños, y cada una la puede llenar las veces que quiera. Antes de empezar, quiere saber cuántas maneras tiene de medir la leche.

Escribe una función que reciba tamanos, una lista de enteros positivos distintos (cuántos mililitros mide cada cuchara; vienen en cualquier orden y la lista puede venir vacía), y cantidad, un entero de 1 a 30: los mililitros que pide la receta. Regresa un entero: de cuántas maneras distintas se junta justo esa cantidad. Solo importa cuántas veces usas cada cuchara, no en qué orden: servir 2 y luego 1 es lo mismo que servir 1 y luego 2.

Con cucharas de 1, 2 y 5 y una receta de 6 hay 5 maneras: seis veces la de 1; cuatro de 1 y una de 2; dos de 1 y dos de 2; tres de 2; una de 1 y una de 5. Con cucharas de 3 y 4 y una receta de 10 solo sirve 3 + 3 + 4, así que regresa 1. Si no hay manera de medirla exacta, regresa 0.

Ejemplos

  • El primer ejemplo

    [1, 2, 5], 6 → 5

  • Empezar por la más grande no sirve

    [3, 4], 10 → 1

  • No hay manera

    [3, 4], 5 → 0

  • Las cucharas vienen desordenadas

    [5, 1, 2], 6 → 5

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def cucharas(tamanos, cantidad):
    pass

JavaScript

function cucharas(tamanos, cantidad) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(2ⁿ)

Ver todos los retos →