Pepitas de código
É uma situação hipotética em que é sexta-feira à noite e você convidou os amigos habituais do golfe para participar do seu hobby favorito: o golfe com código. No entanto, como essa é uma tarefa que drena o cérebro, você precisa pegar um pouco de comida para o grupo para poder jogar o máximo possível de seu código.
Agora, o lanche favorito de todos é o nuggets de frango, mas há um problema: não há um pacote único que cubra as necessidades de todos. Portanto, como você já está no clima do golfe, decide criar um programa que descubra exatamente quais pacotes você deve comprar para poder atender às necessidades de todos os Nugget.
Os tamanhos das embalagens de pepitas de frango estão por todo o lado e, dependendo de onde você mora no mundo, os tamanhos padrão também mudam. No entanto, o [local que serve pepitas mais próximo ] armazena os seguintes tamanhos de pacotes de pepitas:
4, 6, 9, 10, 20, 40
Agora você pode perceber que não pode pedir certas combinações de pepitas. Por exemplo, 11
pepitas não é possível, pois não existe uma combinação que seja 11
exatamente igual . No entanto, você pode fazer 43
obtendo 1 pacote de 20
, 1 pacote de 10
, 1 pacote de 9
e 1 pacote de 4
,
20 + 10 + 9 + 4 = 43 (597)
onde 597
cada termo é elevado ao quadrado e somado (dica: a solução ideal tem isso como o valor mais alto) . É claro que existem outras maneiras de fazer 43
, mas como você sabe, quanto mais pepitas por pacote, mais barato fica por pepita. Portanto, você deseja idealmente comprar o menor número de embalagens e as maiores quantidades para minimizar seu custo.
A tarefa
Você deve criar um programa ou função que faça uma lista de números inteiros correspondentes aos requisitos de cada pessoa. Você deve calcular e imprimir a ordem α mais econômica para comprar os nuggets de frango. A ordem α mais econômica é a combinação pela qual a soma dos quadrados de cada quantidade é a mais alta. Se não há absolutamente nenhuma maneira de comprar as pepitas perfeitamente, você deve imprimir um valor Falsas tais como 0
, False
, Impossible!
, ou o que está disponível no seu idioma.
Exemplo de E / S:
[2 7 12 4 15 3] => [20 10 9 4]
1, 1, 2, 1 => False
6 5 5 5 5 5 9 => 40
[6, 4, 9] => 9 10
1 => 0
199 => 40, 40, 40, 40, 20, 10, 9
2 => Impossible!
Aqui está a lista de soluções ideais para os primeiros 400. Observe que eles não estão formatados como eu esperaria que o seu fosse, cada um tuple
está no formato (N lots of M)
.
Regras
- Sem brechas padrão.
- Não há uso de funções internas que executam toda ou a maioria das tarefas, como
FrobeniusSolve
no Mathematica.
α - Para esclarecer isso com um exemplo, você também pode fazer 43 fazendo 4 + 6 + 6 + 9 + 9 + 9 = 43 (319)
, mas isso não seria o ideal e, portanto, uma saída incorreta, pois a soma dos quadrados é menor que a combinação que observei na introdução. Essencialmente, maior soma de quadrados = menor custo = mais econômico.