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