题解:P10999 [蓝桥杯 2024 省 Python B] 穿越时空之门

· · 题解

数学解法。

众所周知,二进制转四进制非常简单,只需要从后往前两位一断,再分别转四进制就可以了。也就是,把原二进制数拆成若干个 00011011,再分别转成 0123

不难发现,在这四种情况中,数位之和的变化分别为 00+1+1。要让转换之后数位之和不变,则原二进制数两位两位拆开之后只能包含 0001,也就是说,如果从右往左将二进制各个数位从 1 开始编号,那么满足条件的二进制数的偶数位必须是 0

$0$ 到 $2047$ 的满足要求的数的个数也不难算,偶数位必须是 $0$,剩下 $6$ 个奇数位随便选,有 $2^6=64$ 种选法。减去 $0$ 这种情况,答案就是 $64-1=63$。 本题是 [蓝桥杯 2024 省 Python B] 的题,建议提交 Python 代码。 ```python print(63) ``` 但是会发现代码过短交不上去,所以需要随便加点注释,然后就能交上去了。 AC 链接:<https://www.luogu.com.cn/record/174920010>。