第一题:
给n个数组,计算每个数组里面的元素有多少个1,相同1次数为一类,计算每个数组有几类。
思路:减1做&运算。注意将答案放在数组里面分别打印,否则报错。
#coding=utf-8
# 本题为考试多行输入输出规范示例,无需提交,不计分。
import sys
def count_one(nums):
res = []
for num in nums:
count = 0
if num < 0:
num = num & 0xffffffff
while num:
num = (num - 1) & num
count += 1
res.append(count)
return len(set(res))
if __name__ == "__main__":
# 读取第一行的n
g = int(sys.stdin.readline().strip())
ans = []
# 例子个数
for i in range(g):
n = int(sys.stdin.readline().strip())
line = sys.stdin.readline().strip()
line = list(map(int, line.split()))
ans.append(count_one(line))
for i in ans:
print(i)
第二题:
游泳池,一个进水管和一个排水管,分别每度过 t1, t2 时间改变开关的状态,分别每分钟排入 m1,m2 的水量。计算 t 时刻泳池的水量。
思路:分别计算进水管和排水管每分钟入水的水量,有个技巧如下,直接每分钟增加 t1 长度的数组,最后得到的数组长度为(t1 * t)。排水管则取排除水量的