W Kanadzie grosz nie jest już w obiegu. Płatności gotówkowe są zaokrąglane do najbliższych 5 centów.
Pieniądze można zaoszczędzić, dzieląc zakupy. Na przykład dwa przedmioty o wartości 1,02 USD kosztują 2,04 USD, co zaokrągla w górę do 2,05 USD, ale przy zakupie przedmiotów w oddzielnych zakupach każda cena zaokrągla się do 1,00 USD, co daje w sumie 2,00 USD. Jednak kupując dwa przedmioty po 1,03 USD za każdy, lepiej kupić je za jednym razem.
Innym sposobem na zaoszczędzenie pieniędzy jest użycie karty kredytowej, gdy zaokrąglanie jest niekorzystne, ponieważ płatności kredytowe nie są zaokrąglane. Jeśli chcemy dwóch przedmiotów po 1,04 USD, całkowita cena zaokrągli w górę do 2,10 USD, niezależnie od tego, jak podzielimy zakupy. Dlatego powinniśmy płacić za te przedmioty kartą kredytową.
Napisz funkcję lub program, który akceptuje listę cen produktów jako liczby całkowite w centach i generuje najniższą możliwą cenę całkowitą (w centach) dla tych produktów, które można osiągnąć poprzez sekwencję zakupów, każdą gotówką lub kredytem.
Najkrótszy kod wygrywa.
Przypadki testowe
[] : 0
[48] : 48
[92, 20] : 110
[47, 56, 45] : 145
[55, 6, 98, 69] : 225
[6, 39, 85, 84, 7] : 218
[95, 14, 28, 49, 41, 39] : 263
[92, 6, 28, 30, 39, 93, 53] : 335
[83, 33, 62, 12, 34, 29, 18, 12] : 273
[23, 46, 54, 69, 64, 73, 58, 92, 26] : 495
[19, 56, 84, 23, 20, 53, 96, 92, 91, 58] : 583
[3, 3, 19, 56, 3, 84, 3, 23, 20, 53, 96, 92, 91, 58, 3, 3] : 598
[2, 3, 4, 4, 4, 4, 4] : 19
s.reduce(:+)(zwykle nawet nie potrzebujesz nawiasów, ale w twoim przypadku ...) i wstawićmdodatkowe 2 znaki.