Loading

穿越时空之门【算法】【蓝桥杯】

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)
posted @ 2025-03-31 11:15  一只大学生  阅读(9)  评论(0)    收藏  举报