MdOIR5-A Python 验题人做法
考虑到这道题是简单题,读者仍然会比较依赖代码,因此不同的语言是必须的。
本文将仅提供 Python 3 代码。
做法
看到每次跳
每一步向左或向右太麻烦,不如我们先强制向右
向左跳的总长度可以是
向右跳
实现
多测的实现:用 int(input()) 读入 for i in range 生成一个循环。你不必担心 int(input()) 被调用多次,因为第一次输入 range 就确定了。
接下来求最小的
注意到 Python 3 自带 bin 函数,返回一个有 0b 前缀的字符串。因此,如果 s=bin(int(input())),那么减去
最后判断它是不是偶数。我的写法将要输出的 len(s)-3 写进列表,看二进制末位是不是
把上面三句话连在一起,就得到了本题代码:
for i in range(int(input())):
s=bin(int(input()))
print([-1,len(s)-3][s[-1]!='0'])
如果你的 Python 还不熟练,你可以不压行,将上面每个功能拆开写,更容易理解。