เราได้กำหนดไว้แล้วจำนวนพับที่นี่
แต่ตอนนี้เรากำลังจะนิยาม Super Folding Number หมายเลข Super Folding เป็นจำนวนที่ถ้ามีเวลามากพอในที่สุดก็จะถึงหนึ่งน้อยกว่ากำลังสอง วิธีการพับนั้นแตกต่างจากคำถามหมายเลขการพับเล็กน้อย
อัลกอริธึมการพับมีดังนี้:
ทำหน้าที่เป็นตัวแทนไบนารี
เช่น 5882
1011011111010
แยกมันออกเป็นสามส่วน ครึ่งแรก, ครึ่งหลังและตัวเลขกลาง (ถ้ามีจำนวนหลักคี่)
101101 1 111010
หากตัวเลขกลางเป็นศูนย์ตัวเลขนี้จะไม่สามารถถูกพับได้
ย้อนกลับครึ่งหลังและซ้อนทับในครึ่งแรก
010111 101101
เพิ่มตัวเลขในสถานที่
111212
- Iff มี 2s ใด ๆ ในผลลัพธ์ที่ไม่สามารถพับหมายเลขได้มิฉะนั้นหมายเลขใหม่คือผลลัพธ์ของอัลกอริธึมการพับ
ตัวเลขคือหมายเลข Super Folding หากสามารถพับเป็นสตริงต่อเนื่องได้ (ตัวเลขการพับทั้งหมดเป็นตัวเลขการพับอย่างมาก)
งานของคุณคือการเขียนรหัสที่ใช้ในจำนวนและส่งออกค่าความจริงถ้าตัวเลขเป็นจำนวน Super Folding และเป็นเท็จอย่างอื่น คุณจะได้คะแนนตามขนาดของโปรแกรมของคุณ
ตัวอย่าง
5200
แปลงเป็นไบนารี:
1010001010000
แบ่งครึ่ง:
101000 1 010000
ตรงกลางคืออันเดียวดังนั้นเราจะทำการเพิ่มจำนวนครึ่งต่อไป:
000010
101000
เพิ่มพวกเขา:
101010
ไม่มีสองครั้งเราจึงแยกครึ่งต่อไป:
101 010
พับ:
010
101
111
ผลลัพธ์ที่ได้คือ111
(7 ในทศนิยม) ดังนั้นนี่จึงเป็น Super Folding Number
กรณีทดสอบ
100 อันดับแรกของ Super Folding คือ:
[1, 2, 3, 6, 7, 8, 10, 12, 15, 20, 22, 28, 31, 34, 38, 42, 48, 52, 56, 63, 74, 78, 90, 104, 108, 120, 127, 128, 130, 132, 142, 150, 160, 170, 178, 192, 204, 212, 232, 240, 255, 272, 274, 276, 286, 310, 336, 346, 370, 400, 412, 436, 472, 496, 511, 516, 518, 524, 542, 558, 580, 598, 614, 640, 642, 648, 666, 682, 704, 722, 738, 772, 796, 812, 852, 868, 896, 920, 936, 976, 992, 1023, 1060, 1062, 1068, 1086, 1134, 1188, 1206, 1254, 1312, 1314, 1320, 1338, 1386, 1440, 1458, 1506, 1572, 1596]
3
แอบเข้าไปในกรณีทดสอบอีกครั้ง? ฉันไม่สามารถดูว่ามันสามารถพับเก็บเพราะมันแยกไปทันทีให้1 1
2
หรือคุณกำลังบอกว่าการพับมันนับเป็นศูนย์ก็นับด้วยเช่นกัน?