การเรียงลำดับคือลำดับใด ๆ ที่คุณสามารถหาได้จากอีกอันด้วยการลบจำนวนอักขระใด ๆ subsequences ไม่ว่างเปล่าที่แตกต่างของ100
มี0
, 1
, 00
, ,10
100
subsequences ไม่ว่างเปล่าที่แตกต่างของ1010
มี0
, 1
, 00
, 01
, 10
, 11
,010
, 100
, 101
, ,110
1010
เขียนโปรแกรมหรือฟังก์ชั่นที่ให้จำนวนเต็มบวก nส่งกลับจำนวนของ subsequences ไม่ว่างเปล่าที่แตกต่างกันของการขยายตัวไบนารีของn
ตัวอย่าง: ตั้งแต่4
เป็น100
ในไบนารีและเราเห็นว่ามันมีห้า subsequences f(4) = 5
ไม่ว่างเปล่าที่แตกต่างกันข้างต้นดังนั้น เริ่มต้นจากn = 1ลำดับเริ่มต้น:
1, 3, 2, 5, 6, 5, 3, 7, 10, 11, 9, 8, 9, 7, 4, 9, 14, 17, 15, 16, 19, 17, 12
อย่างไรก็ตามโปรแกรมของคุณจะต้องใช้งานได้กับn <2 50ภายในไม่กี่วินาทีบนเครื่องที่ทันสมัย ตัวอย่างขนาดใหญ่:
f(1099511627775) = 40
f(1099511627776) = 81
f(911188917558917) = 728765543
f(109260951837875) = 447464738
f(43765644099) = 5941674