问题描述
随着 20242024 年的钟声回荡,传说中的时空之门再次敞开。这扇门是一条神秘的通道,它连接着二进制和四进制两个不同的数码领域,等待着勇者们的探索。
在二进制的领域里,勇者的力量被转换成了力量数值的二进制表示中各数位之和。
在四进制的领域里,力量的转换规则相似,变成了力量数值的四进制表示中各数位之和。
穿越这扇时空之门的条件是严苛的:当且仅当勇者在二进制领域的力量等同于四进制领域的力量时,他才能够成功地穿越。
国王选定了小蓝作为领路人,带领着力量值从 11 到 20242024 的勇者们踏上了这段探索未知的旅程。作为小蓝的助手,你的任务是帮助小蓝计算出,在这 20242024 位勇者中,有多少人符合穿越时空之门的条件。
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码实现:
cnt = 0
for i in range(1, 2025):
num_2 = bin(i)[2:]
num_4 = ''
while i > 0:
yushu = i % 4 # 计算余数
num_4 = str(yushu) + num_4 # 将余数加到结果的前面
i = i // 4 # 更新十进制数为商
sum_2 = sum(int(i) for i in num_2)
sum_4 = sum(int(i) for i in num_4)
if sum_2 == sum_4:
cnt += 1
print(cnt) #63
相关知识:
1.进制转换(可以看之前发布的文章)
2.i //= 4
是整数除法(integer division,也称为地板除)。它会返回商的整数部分,丢弃小数部分。