นักเก็ตแห่งรหัส
มันเป็นสถานการณ์สมมุติที่มันเป็นเย็นวันศุกร์และคุณได้รับเชิญมากกว่าเพื่อนเล่นกอล์ฟตามปกติจะมีส่วนร่วมในงานอดิเรกที่คุณชื่นชอบ: รหัสการเล่นกอล์ฟ อย่างไรก็ตามเนื่องจากเป็นงานที่ต้องใช้สมองอย่างหนักคุณจึงต้องเลือกอาหารสมองสำหรับกลุ่มเพื่อที่คุณจะได้เล่นกอล์ฟให้มากที่สุดเท่าที่จะเป็นไปได้
ตอนนี้ขนมที่ชื่นชอบของทุกคนคือนักเก็ตไก่ แต่มีปัญหา: ไม่มีชุดเดียวที่ครอบคลุมความต้องการของทุกคน ดังนั้นเนื่องจากคุณอยู่ในอารมณ์ของการเล่นกอล์ฟคุณจึงตัดสินใจที่จะสร้างโปรแกรมที่แสดงให้เห็นว่าแพ็คที่คุณต้องซื้อเพื่อให้ครอบคลุมความต้องการของนักเก็ตทุกคน
ขนาดก้อนนักเก็ตไก่อยู่ทั่วทุกที่และขึ้นอยู่กับว่าคุณอาศัยอยู่ที่ไหนในโลกขนาดมาตรฐานก็เปลี่ยนไปเช่นกัน อย่างไรก็ตาม[สถานที่ที่ให้บริการนักเก็ต]ที่ใกล้เคียงที่สุดจะมีขนาดของก้อนนักเก็ตต่อไปนี้:
4, 6, 9, 10, 20, 40
ตอนนี้คุณอาจสังเกตเห็นว่าคุณไม่สามารถสั่งชุดนักเก็ตได้ ยกตัวอย่างเช่น11นักเก็ตเป็นไปไม่ได้เนื่องจากมีการรวมกันที่เท่ากับไม่มี11ตรง แต่คุณสามารถทำให้43โดยได้รับ 1 แพ็คของ201 แพ็คของ101 แพ็คของ9และ 1 แพ็คของ4,
20 + 10 + 9 + 4 = 43 (597)
ที่597อยู่ในแต่ละระยะยืดและรวมเข้าด้วยกัน(คำใบ้: ทางออกที่ดีที่สุดมีนี้เป็นค่าสูงสุด) แน่นอนว่ามีวิธีอื่นในการทำ43แต่เท่าที่คุณรู้นักเก็ตต่อแพ็คยิ่งมีราคาถูกลงเท่าใดนักต่อนักเก็ต ดังนั้นคุณต้องการซื้อแพ็คจำนวนน้อยที่สุดและในปริมาณมากที่สุดเพื่อลดต้นทุนของคุณ
งาน
คุณควรสร้างโปรแกรมหรือฟังก์ชั่นที่รับรายการจำนวนเต็มที่สอดคล้องกับข้อกำหนดของแต่ละคน จากนั้นคุณควรคำนวณและพิมพ์คำสั่งαที่คุ้มค่าที่สุดเพื่อซื้อนักเก็ตไก่ คำสั่งαที่คุ้มค่าที่สุดคือการรวมกันโดยผลรวมของกำลังสองของแต่ละปริมาณนั้นสูงที่สุด ถ้ามีอย่างวิธีที่จะซื้อนักเก็ตได้อย่างสมบูรณ์แบบไม่มีคุณต้องพิมพ์ค่า falsy เช่น0, False, Impossible!หรือสิ่งที่มีให้บริการในภาษาของคุณ
ตัวอย่าง I / O:
[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!
นี่คือรายการของโซลูชั่นที่เหมาะสำหรับ 400 ก่อนหมายเหตุเหล่านี้ไม่ได้จัดรูปแบบวิธีการที่ผมจะคาดหวังของคุณจะเป็นแต่ละอยู่ในรูปแบบtuple(N lots of M)
กฎระเบียบ
- ไม่มีช่องโหว่มาตรฐาน
- ไม่ใช้ฟังก์ชันในตัวที่ทำหน้าที่ส่วนใหญ่หรือทั้งหมดเช่น
FrobeniusSolveใน Mathematica
α - หากต้องการอธิบายให้ชัดเจนด้วยตัวอย่างคุณสามารถทำ 43 ด้วยการทำเช่น4 + 6 + 6 + 9 + 9 + 9 = 43 (319)นี้ แต่มันจะไม่เหมาะสมและทำให้เอาต์พุตไม่ถูกต้องเนื่องจากผลรวมของสี่เหลี่ยมน้อยกว่าชุดที่ฉันสังเกตไว้ในบทนำ โดยพื้นฐานแล้วผลรวมของสี่เหลี่ยมที่สูงขึ้น = ต้นทุนที่ต่ำกว่า = ต้นทุนที่มีประสิทธิภาพมากที่สุด