ในแคนาดาเงินจะไม่หมุนเวียนอีกต่อไป การจ่ายเงินสดจะถูกปัดเศษเป็น 5 เซนต์ที่ใกล้ที่สุด
เงินสามารถบันทึกได้โดยแยกการซื้อ ตัวอย่างเช่นรายการ $ 1.02 สองรายการมีค่าใช้จ่าย $ 2.04 ซึ่งมีมูลค่าสูงถึง $ 2.05 แต่เมื่อซื้อสินค้าในการซื้อแยกต่างหากแต่ละราคาจะอยู่ที่ $ 1.00 รวมเป็น $ 2.00 อย่างไรก็ตามเมื่อซื้อสองรายการในราคา $ 1.03 ต่อชิ้นจะเป็นการดีกว่าที่จะซื้อในการซื้อครั้งเดียว
อีกวิธีหนึ่งในการประหยัดเงินคือการใช้บัตรเครดิตเมื่อการปัดเศษไม่เอื้ออำนวยเนื่องจากการชำระเงินเครดิตจะไม่ถูกปัดเศษ หากเราต้องการสองรายการ $ 1.04 ราคารวมจะปัดขึ้นเป็น $ 2.10 ไม่ว่าเราจะแยกการซื้ออย่างไร ดังนั้นเราควรชำระเงินสำหรับรายการเหล่านี้ด้วยบัตรเครดิต
เขียนฟังก์ชั่นหรือโปรแกรมที่ยอมรับรายการราคาเป็นจำนวนเต็มในเซนต์และส่งออกราคารวมต่ำสุดที่เป็นไปได้ (ในเซ็นต์) สำหรับรายการเหล่านั้นซึ่งสามารถทำได้ผ่านลำดับของการซื้อไม่ว่าจะเป็นเงินสดหรือเครดิต
รหัสที่สั้นที่สุดชนะ
กรณีทดสอบ
[] : 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(:+)
(โดยปกติคุณไม่จำเป็นต้องใช้วงเล็บ แต่ในกรณีของคุณ ... ) และอินไลน์m
สำหรับ 2 ตัวอักษรเพิ่มเติม