题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#思路一致,原始测量数组只有0,对选定1个砝码与数组中全部值相加,然后去重,不断循环。
#本网站的未知bug:获取数据时如果写input().split(' ')在本地运行不会报错,但在本网站可能会报错。
#故而改成input().split()较为稳妥。
'''写法1:
import sys
while 1:
try:
n = int(input())
m = list(map(int, input().split()))
x = list(map(int, input().split()))
except:
break
else:
mx = []
for i in range(n):
for j in range(x[i]):
mx.append(m[i])
weight = {0,}
for i in mx:
for j in list(weight):
weight.add(i+j)
print(len(weight))
'''
#写法2.
import sys
n = int(input())
m = list(map(int,input().split()))
x = list(map(int,input().split()))
weight = set([0])
for mi,xi in zip(m,x):
for i in range(xi):
weight |= set([x+mi for x in weight])
print(len(weight))
查看16道真题和解析