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 nnú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 1nú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).