รับจำนวนเต็มบวกสองตัวpและqงานของคุณคือส่งคืนอาร์เรย์A ที่สร้างโดยใช้อัลกอริทึมต่อไปนี้:
- เริ่มต้นด้วยA = [p, q]และd = 2
- สำหรับแต่ละคู่(x, y)ของตัวเลขที่ต่อเนื่องกันในที่มีผลรวมหารด้วยdแทรก(x + y) / dระหว่างxและy ที่
- หากพบคู่จับคู่อย่างน้อยหนึ่งค่าให้เพิ่มdและดำเนินการต่อด้วยขั้นตอนที่ 2 มิฉะนั้นหยุดและผลตอบแทน
ตัวอย่าง
ด้านล่างเป็นรายละเอียดของกระบวนการสำหรับp = 1และq = 21
1 21 | Iteration #1: we start with d = 2 and A = [1, 21]
\/ | 1 + 21 is divisible by 2 -> we insert 11
22/2=11 |
|
1 11 21 | Iteration #2: d = 3, A = [1, 11, 21]
\/ | 1 + 11 is divisible by 3 -> we insert 4
12/3=4 |
|
1 4 11 21 | Iteration #3: d = 4, A = [1, 4, 11, 21]
\/ | 11 + 21 is divisible by 4 -> we insert 8
32/4=8 |
|
1 4 11 8 21 | Iteration #4: d = 5, A = [1, 4, 11, 8, 21]
\/ \/ | 1 + 4 is divisible by 5 -> we insert 1
5/5=1 15/5=3 | 4 + 11 is divisible by 5 -> we insert 3
|
1 1 4 3 11 8 21 | Iteration #5: d = 6, A = [1, 1, 4, 3, 11, 8, 21]
| no sum of two contiguous numbers is divisible by 6
| -> we stop here
ดังนั้นผลลัพธ์ที่คาดหวัง: [1, 1, 4, 3, 11, 8, 21]
คำอธิบายและกฎ
- อินพุตและเอาต์พุตสามารถจัดการได้ในรูปแบบที่เหมาะสม จำนวนเต็มPและQมีการรับประกันว่ามากกว่า 0 หากที่จะช่วยให้คุณอาจคิดQ ≥พี
- ขั้นตอนที่สองของอัลกอริทึมไม่ควรนำไปใช้ซ้ำกับองค์ประกอบที่เพิ่งถูกแทรกเข้าไปในการวนซ้ำเดียวกัน ตัวอย่างเช่นA = [1, 1]และd = 2ควรนำไปสู่[1, 1, 1] (ไม่ใช่รายการที่ไม่สิ้นสุดของ 1)
- นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!
กรณีทดสอบ
p | q | Output
----+-----+-------------------------------------------------------------------------------
1 | 1 | [1,1,1]
1 | 2 | [1,2]
1 | 3 | [1,1,2,3]
2 | 6 | [2,1,2,1,4,1,2,6]
3 | 13 | [3,1,8,1,3,1,7,1,2,1,5,1,3,2,13]
9 | 9 | [9,6,9,6,9]
60 | 68 | [60,13,1,4,31,2,3,5,2,19,64,7,13,1,2,5,2,27,44,3,4,8,2,1,12,1,5,3,28,2,4,16,1,
| | 2,12,1,2,1,10,1,6,68]
144 | 336 | [144,68,3,4,8,1,12,1,4,2,28,13,128,44,17,92,240,58,108,5,17,1,2,5,3,28,3,1,11,
| | 60,3,6,2,42,2,4,26,192,54,132,7,1,15,1,3,1,18,1,4,2,30,3,1,12,1,9,78,46,336]
หากคุณต้องการทดสอบโค้ดของคุณในกรณีทดสอบที่ใหญ่กว่าเล็กน้อยนี่คือผลลัพธ์ที่คาดไว้สำหรับ:
- p = 12096 (2 6 * 3 3 * 7)
- q = 24192 (2 7 * 3 3 * 7)
ü
ทำงาน ... นี้ช่วยให้ฉันสามารถปรับปรุงหนึ่งในคำตอบก่อนหน้านี้ของฉัน :-)