HJ41 称砝码 HJ41 称砝码
描述
现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn ;
每种砝码对应的数量为 x1,x2,x3...xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
注:
称重重量包括 0
数据范围:每组输入数据满足 1 \le n \le 10 \1≤n≤10 , 1 \le m_i \le 2000 \1≤mi≤2000 , 1 \le x_i \le 10 \1≤xi≤10
输入描述:
对于每组测试数据:
第一行:n --- 砝码的种数(范围[1,10])
第二行:m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
第三行:x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])
输出描述:
利用给定的砝码可以称出的不同的重量数
n = int(input())
m = list(map(int, input().split()))
x = list(map(int, input().split()))
# 把砝码挨着排列出来
amount = []
for i in range(n): # 砝码的种数
for j in range(x[i]): #每种砝码对应的数量
amount.append(m[i]) # 每种砝码的重量
#print(amount)
# 依次摸一遍砝码
weights = {0,} # set集合
for i in amount: #摸到了第i个砝码
for j in list(weights): # list(weights) 代表之前所有砝码,可能的所有情况,总重量;
weights.add(i+j) # 如果是新的,就增加该情况
#print(weights)
print(len(weights))
----
下边的code看不懂
import
sys
a
=
[]
for
line
in
sys.stdin:
a.append(line[:
-
1
])
for
i
in
range
(
0
,
len
(a),
3
):
s
=
[
0
]
m, x
=
a[i
+
1
].split(), a[i
+
2
].split()
# print(s, m, x)
# 遍历砝码重量
for
j
in
range
(
len
(m)):
# 遍历对应重量砝码个数
for
_
in
range
(
int
(x[j])):
# 遍历现有重量
for
k
in
range
(
len
(s)):
# 依次与现有重量相加
new
=
s[k]
+
int
(m[j])
# 产生新的重量就加入列表
if
new
not
in
s:
s.append(new)
print
(
len
(s))