Meu trabalho é empilhar pedras em pilhas triangulares. Eu só faço isso há um século e já é bem chato. A pior parte é que eu rotulo cada pilha. Eu sei como decompor pedras em pilhas de tamanho máximo , mas quero minimizar o número de pilhas. Você pode ajudar?
Tarefa
Dado um número inteiro, decomponha-o no número mínimo de números triangulares e produza esse número mínimo.
Números triangulares
Um número triangular é um número que pode ser expresso como a soma dos primeiros nnúmeros naturais, por algum valor n. Assim, os primeiros números triangulares são
1 3 6 10 15 21 28 36 45 55 66 78 91 105
Exemplo
Como exemplo, digamos que a entrada seja 9. Como não é um número triangular, não pode ser expresso como a soma do 1número triangular. Assim, o número mínimo de números triangulares é 2, que pode ser obtido com [6,3], produzindo a saída correta de 2.
Como outro exemplo, digamos que a entrada seja 12. A solução mais óbvia é usar um algoritmo ganancioso e remover o maior número triangular de cada vez, produzindo [10,1,1]e produzindo 3. No entanto, existe uma solução melhor:, [6,6]produzindo a saída correta de 2.
Casos de teste
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
Regras
- O número inteiro de entrada está entre 1 e o número máximo máximo do seu idioma.
- Posso imitar qualquer idioma com meus seixos e quero que seu código seja o menor possível, porque não tenho nada além de seixos para acompanhá-lo. Portanto, este é o código-golfe , portanto o código mais curto em cada idioma vence.
n = 12).