รับตัวเลขกำหนดว่าเป็นจำนวนการพับ
จำนวนการพับเป็นจำนวนเช่นนั้นถ้าคุณเอามันมาเป็นตัวแทนไบนารีและ "พับ" มันครึ่งหนึ่งนั่นคือผลลัพธ์ของการคูณ XNOR ของครึ่งแรกของตัวเลขและครึ่งหลังที่มีตัวเลขกลับกันคุณจะได้รับ ศูนย์.
หากตัวเลขมีเลขคี่เป็นเลขฐานสองในเลขฐานสองหลักจะต้องเป็น 1 และจะถูกละเว้นเมื่อทำการพับ
เนื่องจากอาจทำให้ฉันสับสนฉันจะยกตัวอย่าง:
178
การแทนเลขฐานสองของ 178 คือ
10110010
เมื่อต้องการพับนี่เราแบ่งครึ่งก่อน
1011 0010
เราสลับครึ่งหลัง
1011
0100
และเรา XNOR ทั้งสองแบ่งเท่า ๆ กัน:
0000
นี่เป็นศูนย์ดังนั้นนี่คือจำนวนการพับ
1644
การเป็นตัวแทนไบนารีของ 1644 คือ
11001101100
เมื่อต้องการพับนี่เราแบ่งครึ่งก่อน
11001 1 01100
ตรงกลางคือ 1 ดังนั้นเราจึงโยนมันออกไป
11001 01100
เราสลับครึ่งหลัง
11001
00110
และเรา XNOR ทั้งสองแบ่งเท่า ๆ กัน:
00000
นี่เป็นศูนย์ดังนั้นนี่คือจำนวนการพับ
4254
การเป็นตัวแทนไบนารีของ 4254 คือ
1000010011110
เมื่อต้องการพับนี่เราแบ่งครึ่งก่อน
100001 0 011110
จุดกึ่งกลางคือ 0 ดังนั้นนี่ไม่ใช่หมายเลขการพับ
งาน
งานของคุณคือการใช้จำนวนบวกและคืนความจริงถ้าจำนวนที่พับและเท็จถ้าไม่ นี่คือรหัสกอล์ฟดังนั้นให้พยายามนับไบต์ลง
กรณีทดสอบ
นี่คือ 99 หมายเลขแรกของการพับ:
[1, 2, 6, 10, 12, 22, 28, 38, 42, 52, 56, 78, 90, 108, 120, 142, 150, 170, 178, 204, 212, 232, 240, 286, 310, 346, 370, 412, 436, 472, 496, 542, 558, 598, 614, 666, 682, 722, 738, 796, 812, 852, 868, 920, 936, 976, 992, 1086, 1134, 1206, 1254, 1338, 1386, 1458, 1506, 1596, 1644, 1716, 1764, 1848, 1896, 1968, 2016, 2110, 2142, 2222, 2254, 2358, 2390, 2470, 2502, 2618, 2650, 2730, 2762, 2866, 2898, 2978, 3010, 3132, 3164, 3244, 3276, 3380, 3412, 3492, 3524, 3640, 3672, 3752, 3784, 3888, 3920, 4000, 4032, 4222, 4318, 4462, 4558]
0
ไม่ (มันอาจจะคุ้มค่าถ้ามีตัวอย่างงานที่สามเช่นนี้) ไปด้วยกัน 18.