介绍
此挑战要求您将整数二进制表示形式的尾随零设置为010101…
,这最好用一个示例进行说明:
给定整数400
,第一步是将其转换为二进制:
110010000
如我们所见,第五位是最低有效1
位,因此从此处开始,我们将低位零替换为0101
:
110010101
最后,我们将其转换回十进制: 405
挑战
给定正整数返回/输出,上述定义过程的相应结果值。
规则
- 此序列仅针对具有至少一位的整数定义
1
,因此输入将始终≥1 - 您可以将输入作为字符串,而不是数字列表(十进制)
- 您不必处理无效的输入
测试用例
以下是一些带有中间步骤的测试用例(您不必打印/返回这些用例):
In -> … -> … -> Out
1 -> 1 -> 1 -> 1
2 -> 10 -> 10 -> 2
3 -> 11 -> 11 -> 3
4 -> 100 -> 101 -> 5
24 -> 11000 -> 11010 -> 26
29 -> 11101 -> 11101 -> 29
32 -> 100000 -> 101010 -> 42
192 -> 11000000 -> 11010101 -> 213
400 -> 110010000 -> 110010101 -> 405
298 -> 100101010 -> 100101010 -> 298
n
将输入除以2是最大幂,那么答案(input) + ceil((2^n - 2)/3)