O número de partições de um número inteiro é o número de maneiras pelas quais o número inteiro pode ser representado como uma soma de números inteiros positivos.
Por exemplo:
5
4 + 1
3 + 2
3 + 1 + 1
2 + 2 + 1
2 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1
Existem 7 maneiras de representar o número 5, portanto 7 é o número da partição correspondente ao número 5.
Números da partição: OEIS: # A000041
instruções
Escreva um programa que use um número inteiro positivo como entrada e emita os dois números que geram os dois números de partição mais próximos para o número de entrada.
- A entrada deve ser 1 número inteiro positivo.
- Se a entrada não for um número de partição, a saída deverá ser os 2 números inteiros positivos diferentes que geram os dois números de partição mais próximos do número de entrada. (Se dois números de partição são candidatos iguais a um dos números de saída, não importa qual deles você escolher.)
- Se a entrada for um número de partição, a saída deverá ser 1 número inteiro positivo que gere o número de entrada.
- A entrada e a saída podem estar em qualquer formato razoável.
- Você pode assumir que a entrada não será maior que 100 milhões (por exemplo, a saída nunca será maior que 95).
- Funções internas para calcular números de partição não são permitidas, juntamente com outras brechas padrão .
- Isso é código-golfe , portanto, o menor número de bytes vence.
Números da partição: OEIS: # A000041
Exemplos
Input: 66
Output: 11, 12
(Os números da partição que correspondem aos números 11 e 12 são 56 e 77, que são os dois números de partição mais próximos de 66.)
Input: 42
Output: 10
(O número 42 já é um número de partição, portanto, basta gerar o número que corresponde ao número da partição.)
Input: 136
Output: 13, 14
(Os dois números de partição mais próximos de 136 são, na verdade, MENOS que 136 (por exemplo, 101 e 135); portanto, a saída é 13 e 14, em oposição a 14 e 15.)
Input: 1
Output: 0 or 1
(0 e 1 são saídas válidas neste caso especial.)
Input: 2484
Output: 26, 25 or 26, 27
(Ambas as saídas são válidas, porque 2484 é igual d i postura entre 1958 e 3010.)
Input: 4
Output: 3, 4
(Sim)
5
está no topo. (Vou acrescentar esclarecimentos se você acha que não é clara o suficiente.)Respostas:
Pyth , 53
Explicação e mais golfe a seguir.
fonte
Python 2, 179 bytes
Usa a fórmula recursiva do teorema pentagonal de Euler .
Ligue com
f(2484)
. A saída é uma tupla com um ou dois números.fonte
Mathematica,
124123 bytesFórmula para números de partição extraídos da página OEIS . (Pode ou não estar trapaceando ... não consegui decidir.)
Uso:
Eu não estou respondendo para ganhar. E tenho certeza de que isso poderia ser ainda mais jogado.
fonte