第一题:
给n个数组,计算每个数组里面的元素有多少个1,相同1次数为一类,计算每个数组有几类。
#coding=utf-8
# 本题为考试多行输入输出规范示例,无需提交,不计分。
import sys
if __name__ == "__main__":
# 读取第一行的n
t = int(sys.stdin.readline().strip())
ans = 0
result = []
for i in range(t):
# 读取每一行
n = int(sys.stdin.readline().strip())
d = {}
line = sys.stdin.readline().strip()
values = map(int, line.split())
for v in values:
count = 0
while v:
c = v % 2
count += c&1
v = v >> 1
if count in d:
continue
else:
d[count] = 1
result.append(len(d.keys()))
print (result)
第二题:
游泳池,一个进水管和一个排水管,分别每度过 t1, t2 时间改变开关的状态,分别每分钟排入 m1,m2 的水量。计算 t 时刻泳池的水量。
# coding=utf-8
# 本题为考试多行输入输出规范示例,无需提交,不计分。
import sys
if __name__ == "__main__":
# 读取第一行的n
t = int(sys.stdin.readline().strip())
for _ in range(t):
line = sys.stdin.readline().strip()
values = list(map(int, line.split()))
m, t, m1, t1, m2, t2 = values[0], values[1], values[2], values[3], values[4], values[5]
tab1, tab2 = 1, 1
result = 0
for i in range(1, t+1):
if tab1 and not tab2:
if result + m1 < m:
result += m1
else:
result = m
elif tab2 and not tab1:
if result - m2 >= 0:
result -= m2
else:
result = 0
elif tab2 and tab1:
result += (m1 - m2)
if result > m:
result = m
if result < 0:
result = 0
if (i // t1) % 2:
tab1 = 0
else:
tab1 = 1
if (i // t2) % 2:
tab2 = 0
else:
tab2 = 1
print(result)
第三题:
给定n个字符串,判断字符串最大连续N的个数(可以容许改变两个字符)
# coding=utf-8
# 本题为考试多行输入输出规范示例,无需提交,不计分。
import sys
if __name__ == "__main__":
# 读取第一行的n
t = int(sys.stdin.readline().strip())
ans = 0
result = []
interval = []
for _ in range(t):
# 读取每一行
s = sys.stdin.readline().strip()
lens = len(s)
if s[-1] == "N":
s = s + "G"
l = []
ls = len(s)
k = 0
for i in range(ls):
if s[i] != "N":
if not l:
l.append(i)
k = i
else:
l.append(i - k - 1)
k = i
if len(l) <= 3:
re = lens
else:
interval = [l[i] + l[i - 1] + l[i - 2] + 2 for i in range(2, len(l))]
re = max(interval)
print(re)