บทนำ
คุณมีเพื่อนที่คอยขอสินเชื่อและคุณเบื่อมัน วันนี้เขามาเพื่อขอสินเชื่ออีกครั้ง แทนที่จะเปลี่ยนข้อเสนอของเขาคุณจะได้รับความคิดที่ดี: หมุนรอบเพื่อนของคุณโดยให้เหรียญ / ธนบัตรให้มากที่สุด
ท้าทาย
คุณจะใช้เป็นอินพุต: จำนวนเงินที่เพื่อนของคุณต้องการเงินกู้และจำนวนเหรียญ / ตั๋วเงินที่คุณมี สำหรับความท้าทายนี้สกุลเงินที่เป็นไปได้คือ $ 20.00, $ 10.00, $ 5.00, $ 2.00, $ 1.00, $ 0.25, $ 0.10, $ 0.05, และ $ 0.01 ตัวอย่างของการป้อนข้อมูลคือ5.67, [5, 3, 4, 5, 5, 9, 8, 1, 2]
ถ้าเพื่อนของคุณต้องการ $ 5.67 และคุณมีตั๋ว 5 $ 20, ตั๋วเงิน 3 $ 10 ฯลฯ ผลผลิตของคุณจะเป็นจำนวนเหรียญ / ตั๋วที่ให้เพื่อนของคุณเป็นโลหะ / กระดาษ / พลาสติกมากที่สุด
หากเป็นไปไม่ได้ที่จะให้เงินตามจำนวนที่เขาต้องการกับเพื่อนของคุณให้เขาให้จำนวนเงินที่ใกล้เคียงที่สุดที่คุณสามารถจ่ายที่มากกว่าที่เขาต้องการ ตัวอย่างเช่นหากเพื่อนของคุณต้องการ $ 0.07 แต่คุณมีเพียง[0, 0, 0, 0, 0, 2, 4, 2, 0]
ให้เขา 2 เหรียญ 0.05 เหรียญ (ไม่ใช่ 1 $ 0.10 เพราะนั่นจะไม่ให้เหรียญเขามากเท่าที่จะเป็นไปได้!)
หากเพื่อนของคุณต้องการเงินมากกว่าที่คุณมีให้เงินเขาทั้งหมด (และคุณไม่ต้องซื้ออะไรเลย)
กรณีทดสอบ
Input: 6.54, [9, 8, 7, 6, 5, 4, 3, 2, 4]
Output: [0, 0, 0, 1, 4, 1, 2, 1, 4]
Input: 2, [0, 1, 0, 0, 0, 0, 0, 0, 0]
Output: [0, 1, 0, 0, 0, 0, 0, 0, 0]
Input: 9999, [0, 0, 0, 0, 0, 0, 0, 0, 1]
Output: [0, 0, 0, 0, 0, 0, 0, 0, 1]
Input: 0, [99, 99, 99, 99, 99, 99, 99, 99, 99]
Output: [0, 0, 0, 0, 0, 0, 0, 0, 0]
นี่คือรหัส - กอล์ฟเพื่อให้ได้รหัสที่สั้นที่สุด
2.00
และ20.00
แต่ไม่มี0.2
หรือ0.02
:(