Mi trabajo es apilar piedras en pilas triangulares. Solo he estado haciendo esto durante un siglo y ya es bastante aburrido. La peor parte es que etiqueto cada pila. Sé cómo descomponer los guijarros en pilas de tamaño máximo , pero quiero minimizar el número de pilas. ¿Puede usted ayudar?
Tarea
Dado un número entero, descomponerlo en el número mínimo de números triangulares y generar ese número mínimo.
Números triangulares
Un número triangular es un número que puede expresarse como la suma de los primeros n
números naturales, por algún valor n
. Así, los primeros pocos números triangulares son
1 3 6 10 15 21 28 36 45 55 66 78 91 105
Ejemplo
Como ejemplo, digamos que la entrada es 9
. No es un número triangular, por lo que no puede expresarse como la suma del 1
número triangular. Por lo tanto, el número mínimo de números triangulares es 2
, que se puede obtener con [6,3]
, dando la salida correcta de 2
.
Como otro ejemplo, digamos que la entrada es 12
. La solución más obvia es usar un algoritmo codicioso y eliminar el número triangular más grande a la vez, dando [10,1,1]
como resultado una salida de 3
. Sin embargo, hay una mejor solución: obtener [6,6]
el resultado correcto de 2
.
Casos de prueba
in out
1 1
2 2
3 1
4 2
5 3
6 1
7 2
8 3
9 2
10 1
11 2
12 2
13 2
14 3
15 1
16 2
17 3
18 2
19 3
20 2
100 2
101 2
5050 1
Reglas
- El entero de entrada está entre 1 y el entero máximo de su idioma.
- Puedo emular cualquier idioma con mis guijarros , y quiero que su código sea lo más pequeño posible porque no tengo nada más que guijarros para rastrearlo. Por lo tanto, este es el código de golf , por lo que gana el código más corto en cada idioma .
n = 12
).