def get_bin_sum(num):
"""
获取num的二进制各位之和
:param num:
:return: 返回二进制字符串
"""
# 获取num的二进制字符串
bin_str = bin(num)[2:]
# 返回num的二进制字符串的各位之和
return sum(int(i) for i in bin_str)
def get_quaternary_sum(num):
"""
获取num的四进制
:param num:
:return: 返回四进制字符串
"""
# 定义num_list,用于存放num的四进制的各位数字
num_list = []
# 生成num_list
while num != 0:
remainder = num % 4
num_list.append(remainder)
num = num // 4
# 返回num_list各元素之和
return sum(num_list)
def bin_sum_equal_quaternary_sum(num):
"""
判断num的二进制各位之和是否等于四进制各位之和
:param num:
:return: 返回Ture或False
"""
# 二进制各位之和
bin_sum = get_bin_sum(num)
# 四进制各位之和
quaternary_sum = get_quaternary_sum(num)
# 两者是否相等,返回True或False
return bin_sum == quaternary_sum
if __name__ == '__main__':
""" 程序入口 """
# 定义计数器,记录通过个数
counter = 0
# 计算通过个数
for i in range(1, 2025):
# 计算
is_equal = bin_sum_equal_quaternary_sum(i)
# 通过,+1
if is_equal:
counter += 1
# 返回
print(counter)