O teorema dos números poligonais de Fermat afirma que todo número inteiro positivo pode ser expresso como a soma de no máximo números na diagonal. Isso significa que todo número inteiro positivo pode ser expresso como a soma de até três números de triângulos, quatro números quadrados, cinco números pentagonais etc. Sua tarefa é pegar um número inteiro positivo , e um número inteiro , e gerar os números inteiros -gonal que somam .
O -simo -gonal inteiro, onde e , pode ser definida em uma de duas maneiras. A forma não-matemática y é que o ° série -gonal pode ser construído como um polígono regular com lados, cada uma de comprimento . Por exemplo, para (números triangulares):
Veja aqui exemplos com um maior .
A definição matemática-y é, utilizando a fórmula para , que produz o -simo número -gonal:
que é fornecido na página da Wikipedia aqui .
Entrada
Dois inteiros positivos, e , com a condição . Você pode inserir esses números inteiros na representação mais natural do seu idioma (decimal, unário, numerais da Igreja, números de ponto flutuante com valor inteiro etc.).
Saída
Uma lista de números inteiros, , com um comprimento máximo de , em que a soma de é igual a e todos os números inteiros em são números inteiros -gonais. Novamente, os números inteiros podem ser emitidos na representação natural em seu idioma, com qualquer separador consistente e distinto (portanto caracteres não decimais para saída decimal, um caractere diferente daquele usado para saída unária etc.)
Regras
- As entradas ou saídas nunca excederão o limite inteiro para o seu idioma
- não precisa ser encomendado
- No caso de múltiplas saídas possíveis, qualquer uma ou todas são aceitáveis
- Isso é código-golfe, então o código mais curto em bytes vence
Casos de teste
x, s => L
1, s => 1
2, s => 1, 1
5, 6 => 1, 1, 1, 1, 1
17, 3 => 1, 6, 10
17, 4 => 1, 16
17, 5 => 5, 12
36, 3 => 36
43, 6 => 15, 28
879, 17 => 17, 48, 155, 231, 428
4856, 23 => 130, 448, 955, 1398, 1925
x=17, s=5
poderíamos produzir em 5,12,0,0,0
vez de apenas 5,12
?
Q
a meu envio?