题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import sys #for line in sys.stdin: # a = line.split() # print(int(a[0]) + int(a[1])) n = int(input()) listm = list(input().split()) #此处定义砝码的数量 listnumber = list(input().split()) listnumber = list(map(lambda x : int(x),listnumber)) #此处定义砝码的质量 listm = list(map(lambda x : int(x),listm)) #定义重量列表 wight_list = [0] # 遍历各种砝码的重量 for i in range(n): # 放入砝码为listm[i]重量为j个后,增加的重量 tmp = [ ] # 质量对应的数量进行遍历添加,添加0个,或者一个,或者到listnumber[i]个 for j in range(listnumber[i]+1): #添加j个,就意味着增加j*listm[i]的质量,比如j=0,不增加,j=1那就需要增加1个listm[i]质量的砝码 #因为总共有J个,最多可以增加0,1,2...listnumber[i]+1种 tmp.append(listm[i]*j) tmp2 =[ ] for a in tmp: for b in wight_list: tmp2.append(a+b) wight_list = list(set(tmp2)) #打印重量种类 print(len(wight_list))