เรากำหนดลำดับเหมือนCollatzs
ด้วยจำนวนเต็มบวก 4 ตัว:
n
ค่าเริ่มต้นd > 1
จำนวนหารm > 1
ตัวคูณi
การเพิ่มขึ้น
(ในลำดับ Collatz ดั้งเดิมd = 2
m = 3
และi = 1
.)
กำหนดจำนวนเต็มเหล่านี้s
จะถูกสร้างขึ้นในลักษณะดังต่อไปนี้:
s(0) = n
- ถ้า
k > 0
และs(k-1) mod d = 0
แล้วs(k) = s(k-1) / d
- ถ้า
k > 0
และs(k-1) mod d != 0
แล้วs(k) = s(k-1) * m + i
ลำดับเช่นกับd = 2, m = 3, i = 5
และจะn = 80
s = 80, 40, 20, 10, 5, 20, 10, 5, 20, ...
ทุกลำดับจะถึงค่าที่สูงกว่าขอบเขตที่กำหนด (เช่นลำดับนั้นแตกต่างกัน) หรือเข้าสู่วงวนไม่สิ้นสุดหากสำหรับบางส่วนt
และu
( t!=u
) s(t) = s(u)
ความเท่าเทียมกันจะเป็นจริง
ในปัญหาของเราหากค่าขององค์ประกอบลำดับนั้นมีขนาดใหญ่กว่า10^9
หรือไม่มีการทำซ้ำองค์ประกอบก่อนที่1000
องค์ประกอบที่ลำดับนั้นถือว่าแตกต่างกัน
งาน
คุณควรเขียนโปรแกรมหรือฟังก์ชั่นที่รับจำนวนเต็มบวกd
m
และi
เป็นอินพุตและเอาท์พุตชนิดสิ้นสุดที่แตกต่างกันทั้งหมดของลำดับ (วนซ้ำไม่สิ้นสุดและความแตกต่าง) ซึ่งค่าเริ่มต้นn = 1, 2, 3, ... 999, 1000
สามารถสร้างได้
ใส่รายละเอียด
- การป้อนข้อมูลที่เป็นสตริงหรือรายการ (หรือเทียบเท่าใกล้เคียงที่สุดในภาษาของคุณ) เป็นตัวแทน (ในวิธีการทั่วไป) สามจำนวนเต็มบวก
d
,m
และi
อยู่ในลำดับที่d
และอย่างน้อยm
ทั้งจำนวนมีขนาดใหญ่กว่า2
100
รายละเอียดผลลัพธ์
สเปคเอาท์พุทเป็นคำพูดเล็กน้อย อาจคุ้มค่าที่จะดูตัวอย่างก่อน
- คุณควรส่งออกไปยังเอาต์พุตมาตรฐาน (หรือทางเลือกที่ใกล้เคียงที่สุด) หรือส่งคืนสตริง
DIVERGENT
ถ้าลำดับที่แตกต่างกันเป็นไปได้ในบรรทัดแรกที่ควรจะเป็น- การแสดงที่เป็นเอกลักษณ์ของการวนซ้ำของลำดับคือการหมุนโดยที่จำนวนที่เล็กที่สุดจะถูกคั่นด้วยช่องว่างสุดท้าย เช่นถ้าห่วงคือ
s = 2 1 4 2 1 4 2 1
4 2 1
LOOP
ในบรรทัดต่อไปนี้ทุกครั้งที่คุณควรส่งออกทุกวงที่ไม่ซ้ำกันว่าครั้งหนึ่งเคยนำหน้าด้วยคำว่า เช่นLOOP 4 2 1
- ลูปควรเรียงจากน้อยไปมากตามองค์ประกอบสุดท้ายของพวกเขา
- ขึ้นบรรทัดใหม่ต่อท้ายเป็นตัวเลือก
ตัวอย่าง:
บรรทัดแรกคืออินพุตและบรรทัดต่อไปนี้จนกว่าบรรทัดว่างจะเป็นเอาต์พุต
2 3 1
LOOP 4 2 1
2 2 6
LOOP 8 4 2 1
LOOP 12 6 3
3 7 8
DIVERGENT
LOOP 15 5 43 309 103 729 243 81 27 9 3 1
LOOP 22 162 54 18 6 2
LOOP 36 12 4
3 9 1
DIVERGENT
6 9 9
DIVERGENT
LOOP 18 3 36 6 1
LOOP 27 252 42 7 72 12 2
LOOP 45 414 69 630 105 954 159 1440 240 40 369 3330 555 5004 834 139 1260 210 35 324 54 9 90 15 144 24 4
LOOP 81 738 123 1116 186 31 288 48 8
LOOP 99 900 150 25 234 39 360 60 10
LOOP 126 21 198 33 306 51 468 78 13
10 10 10
LOOP 20 2 30 3 40 4 50 5 60 6 70 7 80 8 90 9 100 10 1
93 91 92
DIVERGENT
LOOP 2185 198927 2139 23
LOOP 4278 46
การใช้งานอ้างอิงใน Python 3 บน Ideone
นี่คือรหัสกอล์ฟที่สั้นที่สุดที่จะชนะ