题解 | #称砝码#
称砝码
http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
# 首先根据输入顺序,将砝码用数字序列表示,例如2个1g和1个2g,就用 1 1 2的序列表示; # set序列用来表示加入当前砝码之前能产生的重量种类; # set初始化为{0};当第一个1g砝码放入时,则set中需要插入原先set中的所有元素+1g后的结果;即{0, 0+1}; # 当第二个1g加入时,则set会插入{0+1, 1+1},就变成了{0, 1, 2}; # 重复上述步骤加入所有砝码;则最后set的大小即为能产生的重量种类 import sys while True: try: n = int(input()) ms = list(map(int, input().split())) xs = list(map(int, input().split())) m_l = [] for i in range(len(ms)): for x in range(xs[i]): m_l.append(ms[i]) c_set = {0} for m in m_l: for c in set(c_set): c_set.add(m + c) print(len(c_set)) except: # print(sys.exc_info()) break