📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 |问题 74(1)

📅  最后修改于: 2023-12-03 15:07:34.830000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 |问题 74

本题要求我们写一个函数,将一个十进制数转换成二进制,并计算二进制数中1的个数。

程序设计

输入一个正整数 $n$,将其转换成二进制数 $b$,并统计 $b$ 中1的个数。具体步骤如下:

  1. 将 $n$ 对2取余,将余数记录下来,将 $n$ 除以2。直到 $n<1$ 为止。
  2. 将余数按照倒序排列起来,即为 $b$,统计 $b$ 中1的个数。
代码实现
def bin_count(n):
    """
    将一个十进制数转换成二进制,并统计二进制数中1的个数。
    """
    bits = []
    while n >= 1:
        bits.append(n % 2)
        n = n // 2
    bits.reverse()
    cnt = 0
    for bit in bits:
        if bit == 1:
            cnt += 1
    return cnt
测试样例
assert bin_count(4) == 1
assert bin_count(15) == 4
assert bin_count(32) == 1
总结

本题考察了我们对于二进制数的理解。在实现函数的过程中,需要注意将余数按照倒序排列,以及统计1的个数的方法。