Cambio de monedas II

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 9
Dificultad Medio Algoritmos
Mostrar (2) ConteoProgramación dinámica
Enviar solución

Puntos: 10

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Tienes monedas de \(m\) denominaciones distintas, con cantidad ilimitada de cada una. Cuenta de cuántas formas se puede pagar exactamente el monto \(s\). El orden no importa: \(1 + 2\) y \(2 + 1\) son la misma forma. Pagar \(0\) tiene una forma (no usar monedas).

Entrada

La primera línea tiene \(s\) \((0 \le s \le 5000)\) y \(m\) \((1 \le m \le 300)\). La segunda tiene las \(m\) denominaciones, distintas y entre \(1\) y \(5000\).

Salida

La cantidad de formas, módulo \(10^9 + 7\).

Ejemplo 1

Entrada

5 3
1 2 5

Salida

4

Ejemplo 2

Entrada

3 1
2

Salida

0

Ejemplo 3

Entrada

10 1
10

Salida

1

Comentarios

No hay comentarios por el momento.