หมายเหตุ: ความท้าทายนี้ได้รับการโพสต์บนกล่องเครื่องมือ
บทนำ
ความท้าทายนี้ได้รับแรงบันดาลใจมาจาก2009 Putnam B1ซึ่งเป็นปัญหาในการแข่งขันคณิตศาสตร์ระดับปริญญาตรี ปัญหาดังต่อไปนี้:
แสดงให้เห็นว่าทุกจำนวนตรรกยะที่เป็นบวกสามารถเขียนได้เป็นผลหารของผลคูณของแฟกทอเรียลของช่วง (ไม่จำเป็นต้องชัดเจน) ตัวอย่างเช่น,
ท้าทาย
ความท้าทายของคุณคือการใช้จำนวนเต็มบวกจำนวนเต็มซึ่งเป็นตัวแทนตัวเศษและตัวหารของจำนวนตรรกยะที่เป็นบวก (หรือเพียงแค่จำนวนตรรกยะเอง) เป็นอินพุตและส่งออกสองรายการ (หรืออาร์เรย์ ฯลฯ ) ของจำนวนเฉพาะเพื่อให้ จำนวนตรรกยะที่ป้อนเข้านั้นเท่ากับอัตราส่วนของผลคูณของแฟกทอเรียลของจำนวนเฉพาะในรายการแรกกับผลคูณของแฟกทอเรียลของจำนวนเฉพาะในรายการที่สอง
หมายเหตุ
- อาจไม่มีช่วงเวลาที่มีทั้งในรายการแรกและในรายการที่สอง อย่างไรก็ตามนายกอาจปรากฏหลายครั้งตามที่ปรารถนาในรายการใดรายการหนึ่ง
- อินพุตสามารถสันนิษฐานได้ว่าแต่ละค่า (ไม่ จำกัด ) ระหว่าง 1 ถึง 65535 อย่างไรก็ตามไม่สามารถสรุปได้ว่าแฟกทอเรียลของตัวเลขที่คุณจะต้องใช้ในการส่งออกจะอยู่ในช่วงนี้
ตัวอย่างอินพุตและเอาต์พุต
นี่คือตัวอย่างของอินพุตและเอาต์พุตทางกฎหมาย
input=>output
10,9 => [2,5],[3,3,3]
2,1 => [2],[]
3,1 => [3],[2]
1,5 => [2,3,2],[5] (elements of a list may be in any order)
3,2 => [3],[2,2]
6,1 => [3],[]
อินพุต (2,2), (0,3), (3,0), (3,6) และ (1,65536) เป็นอินพุตที่ผิดกฎหมาย (เช่นโปรแกรมของคุณไม่จำเป็นต้องทำงานในลักษณะเฉพาะใด ๆ กับพวกเขา ) นี่คือตัวอย่างของผลลัพธ์ที่ผิดกฎหมาย:
1,2 => [2],[2,2] (2 is in both returned lists)
5,2 => [5],[2,4] (4 is not prime)
2,1 => [2],[1] (1 is not prime either)
3,2 => [3],[2] (3!/2! = 3, not 3/2)
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นคะแนนต่ำสุดเป็นไบต์ชนะ!
10/9
มากกว่าคู่ของตัวเลข10
และ9
?
10/9
=[2*5]/[3*3]
=[(2!/1!) * (5!/4!)] / [(3!/2!) * (3!/2!)]
= =[2! * 5! * 2! * 2!] / [3! * 3! * 1! * 4!]
(2! * 2! * 2! *5!) / (3! * 3! * 4!)