华为机试-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
内存确实小了一丢丢,但是时间长了?又是充满问号的一天