Crédito para Geobits na TNB pela ideia
Um post sem detalhes suficientes postou recentemente um jogo interessante:
2 crianças sentam-se na frente de uma variedade de doces. Cada pedaço de doce é numerado de 1 a x
, x
sendo a quantidade total de presente presente. Há exatamente 1 ocorrência de cada número.
O objetivo do jogo é que as crianças comam doces e multipliquem os valores dos doces que comeram para chegar a uma pontuação final, obtendo a pontuação mais alta.
No entanto, a postagem original perdeu informações importantes, como a seleção de doces, para que as crianças de nossa história decidissem que a criança mais velha iria primeiro e pudessem comer até metade do doce, no entanto, depois que ele anuncia o fim de seu turno, ele não pode mudar de idéia.
Uma das crianças deste jogo não gosta de doces, então ele quer comer o mínimo possível, e uma vez viu o pai escrever algum código uma vez e acha que pode usar as habilidades adquiridas com isso para descobrir quanto doce ele precisa comer para garantir a vitória, enquanto ainda come o mínimo possível.
O desafio
Dado o número total de doces x
, seu programa ou função deve produzir a menor quantidade de doces que ele precisa comer para garantir a vitória n
, mesmo que o oponente coma todo o restante do doce.
Números naturalmente maiores produzem números maiores, então, qualquer que seja a quantia que você lhe der, ele comerá os n
maiores números.
As regras
x
sempre será um número inteiro positivo no intervalo em0 < x! <= l
quel
está o limite superior dos recursos de manipulação de números do seu idioma- É garantido que o garoto sempre coma o
n
maior número, por exemplo, parax = 5
en = 2
, ele coma4
e5
Casos de teste
x = 1
n = 1
(1 > 0)
x = 2
n = 1
(2 > 1)
x = 4
n = 2
(3 * 4 == 12 > 1 * 2 == 2)
x = 5
n = 2
(4 * 5 == 20 > 1 * 2 * 3 == 6)
x = 100
n = 42
(product([59..100]) > product([1..58]))
x = 500
n = 220
(product([281..500]) > product([1..280]))
Pontuação
Infelizmente, nosso corajoso concorrente não tem nada com o qual escrever seu código; portanto, ele precisa organizar os pedaços de doces nos caracteres do código; como resultado, seu código precisa ser o menor possível, o menor código em bytes ganha!
x = 0
Também deve ser tratado, desde 0! = 1
? (Talvez x
também deva ser especificado como um número inteiro positivo?)