华为机试-HJ62
查找输入整数二进制中1的个数
http://www.nowcoder.com/questionTerminal/1b46eb4cf3fa49b9965ac3c2c1caf5ad
方案一:
while True :
try:
m=int(input())
num=[]#放二进制数
while m!=1:
a=m%2
if a:
num.append(a)
m=(m-a)/2
else:
m=(m-a)/2
#不能写continue,continue 用于跳过该次循环,不会更新m
print(len(num)+1)
except:
break运行时间:18ms
占用内存:3360k
瞎琢磨了一下,新开了一个列表放1,列表里面如果放了很多1会不会有点占内存??
以及,把里面的重复的代码写成函数会不会好点点?
方案二:
def cal_data(num):
i=0
while num>0:
if num%2==1:
i+=1
num=num//2#向下去取整,不是用/
else:
num=num//2
return i
while True :
try:
m=int(input())
count=cal_data(m)
print(count)
except:
break 运行时间:23ms
占用内存:3448k
内存确实小了一丢丢,但是时间长了?又是充满问号的一天
查看1道真题和解析