Au Canada, le sou n'est plus distribué. Les paiements en espèces sont arrondis aux 5 cents les plus proches.
L'argent peut être économisé en fractionnant les achats. Par exemple, deux articles de 1,02 $ coûtent 2,04 $, ce qui arrondit à 2,05 $, mais lors de l'achat des articles dans des achats séparés, chaque prix arrondit à 1,00 $ pour un total de 2,00 $. Cependant, lors de l'achat de deux articles à 1,03 $ chacun, il est préférable de les acheter en un seul achat.
Une autre façon d'économiser de l'argent consiste à utiliser une carte de crédit lorsque l'arrondi est défavorable, car les paiements par crédit ne sont pas arrondis. Si nous voulons deux articles 1,04 $, le prix total arrondira à 2,10 $, quelle que soit la façon dont nous répartissons les achats. Par conséquent, nous devons payer ces articles avec une carte de crédit.
Écrivez une fonction ou un programme qui accepte une liste de prix des articles sous forme d'entiers en cents et affiche le prix total le plus bas possible (en cents) pour ces articles qui peut être atteint par une séquence d'achats, chacun en espèces ou par crédit.
Le code le plus court gagne.
Cas de test
[] : 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(:+)
(normalement vous n'avez même pas besoin de paranthèses, mais dans votre cas ...) et en lignem
pour 2 caractères supplémentaires.