首页 > 试题广场 >

查找输入整数二进制中1的个数

[编程题]查找输入整数二进制中1的个数
  • 热度指数:165186 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的整数 nm,分别求解他们在二进制表示下的 1 的个数。

输入描述:
\hspace{15pt}第一行输入一个整数 n\left(0 \leqq n \lt 2^{31}\right) 代表需要求解的第一个数字。
\hspace{15pt}第二行输入一个整数 m\left(0 \leqq m \lt 2^{31}\right) 代表需要求解的第二个数字。


输出描述:
\hspace{15pt}第一行输出一个整数,代表 n 在二进制表示下的 1 的个数。
\hspace{15pt}第二行输出一个整数,代表 m 在二进制表示下的 1 的个数。
示例1

输入

5
0

输出

2
0

说明

\hspace{15pt}十进制 05 的二进制表示如下:
\hspace{23pt}\bullet\,十进制 (0)_{10} 等于二进制 (0)_{2}
\hspace{23pt}\bullet\,十进制 (1)_{10} 等于二进制 (1)_{2}
\hspace{23pt}\bullet\,十进制 (2)_{10} 等于二进制 (10)_{2}
\hspace{23pt}\bullet\,十进制 (3)_{10} 等于二进制 (11)_{2}
\hspace{23pt}\bullet\,十进制 (4)_{10} 等于二进制 (100)_{2}
\hspace{23pt}\bullet\,十进制 (5)_{10} 等于二进制 (101)_{2}

备注:
\hspace{15pt}本题数据已进行规范,不再需要读入至文件结尾(2025/01/09)。
import sys

# 查找1的个数
def func(n):
    arr = [0]*32
    for i in range(len(arr)):
        # 右移i位,对1按位与,如果为1,说明i位为1
        if n>>i & 1 == 1:
            arr[i] = 1
    return arr.count(1)


for line in sys.stdin:
    num = int(line.strip())
    print(func(num))
    

发表于 2021-05-01 09:59:02 回复(0)
while True:
    try:
        print(bin(int(input(), 10)).count('1'))
    except EOFError:
        break

发表于 2021-03-24 21:55:22 回复(0)
while True:
    try:
        num = int(input())
        print(bin(num).count('1'))
    except:
        break
发表于 2021-03-15 10:34:09 回复(0)
python一行代码:
while True:
    try:
        print(format(int(input().strip()), 'b').count('1'))
    except:
        break

编辑于 2020-12-03 17:18:19 回复(0)
while True:
    try:
        num = int(input())
        bins = str(bin(num))
        print(bins.count("1"))
    except:
        break
        

发表于 2020-11-14 10:08:31 回复(0)

Python时间复杂度低

while True:
    try:
        n = int(input())
        cnt = 0
        while n:
            n = n&(n-1)#清零最低位的1
            cnt += 1
        print(cnt)
    except:
        break
发表于 2020-09-23 21:26:30 回复(0)
while True:
    try:
        n = int(input())
        n_bin = bin(n)
        print(n_bin.count('1'))
    except:
        break

发表于 2020-08-22 21:09:59 回复(0)
def f(n):
    b = bin(n)[2:]
    b = str(b)
    count = 0
    for i in b:
        if i == '1':
            count +=1
    return count

while True:
    try:
        n = int(input())
        if n:
            print(f(n))
    except:
        break

发表于 2020-08-05 14:52:29 回复(0)
while True:
    try:
        n = int(input())
        count = 0
        while n:
            if n & 1:
                count += 1
            n = n >> 1
        print(count)
    except:
        break
这题主要考察位运算吧
发表于 2020-07-21 02:42:30 回复(0)
while 1:
    try:
        print(str(bin(int(input()))).count('1'))
    except:
        break

转换为str再计数'1'的个数

发表于 2020-05-08 16:53:06 回复(0)
while 1:
    try:
        print(bin(int(input()))[2:].count("1"))
    except:
        break

发表于 2020-03-02 18:30:39 回复(1)
while True:
  try:
    print(bin(int(input())).count("1"))
  except:
    break

发表于 2020-02-20 12:31:25 回复(0)
try:
    while True:
        print(bin(eval(input())).count('1'))
except:
    pass

发表于 2019-08-15 20:16:41 回复(0)
while True:
    try:
        n=int(input().strip())
        #print(n)
        bin_num=list(str(bin(n)).lstrip('0b'))
        #print(bin_num)
        result=bin_num.count('1')
        print(result)
    except:
        break
发表于 2019-06-16 21:39:38 回复(0)
while True:
    try:
        print(bin(int(input())).count("1"))
    except:break

python3 一行解法。

发表于 2017-09-06 15:11:01 回复(24)
import sys
for num in sys.stdin:
num_temp=bin(int(num))
print(num_temp.count('1'))
发表于 2016-09-23 19:44:55 回复(0)
while True:
    try:
        line = raw_input()
        print bin(int(line)).count("1")
    except:
        break

发表于 2016-09-23 17:09:46 回复(0)

问题信息

难度:
19条回答 27047浏览

热门推荐

通过挑战的用户

查看代码
查找输入整数二进制中1的个数