试题
代码
(1)30分代码
# 读取n,a,b
# n表示向量u,v的维数,a,b分别表示u,v的非零值个数
n, a, b = [int(i) for i in input().split()]
# 创建两个二维队列存放u,v的信息
List1 = []
List2 = []
for i in range(a):
line = input().split()
c, d = line
d = int(d)
List1.append((c, d))
for i in range(b):
line = input().split()
c, d = line
d = int(d)
List2.append((c, d))
# 判断,对于两个二维数组中的元组,键相同时,将值相乘,存放在sum中
sum = 0
if len(List1) <= len(List2):
# 准备工作,用队列来存放二维数组中的所有第一个值
list2 = []
for i in range(b):
list2.append(List2[i][0])
# 对短的那个二维队列进行遍历
for i in range(a):
if List1[i][0] in list2:
found = list2.index(List1[i][0])
sum += List1[i][1]*List2[found][1]
else:
list1 = []
for i in range(a):
list1.append(List1[i][0])
for i in range(a):
if List2[i][0] in list1:
found = list1.index(List1[i][0])
sum += List1[found][1]*List2[i][1]
print(sum)
(2)60分代码
n,a,b = [int(i) for i in input().split()]
dict1 = {
}
for i in range(a):
line = input().split()
c,d = line
d = int(d)
dict1[c] = d
dict2 = {
}
for i in range(b):
line = input().split()
c,d = line
d = int(d)
dict2[c] = d
sum = 0
if len(dict1) <= len(dict2):
for key in dict1.keys():
if dict2.get(key):
sum += dict1[key]*dict2[key]
else:
for key in dict2.keys():
if dict1.get(key):
sum += dict1[key]*dict2[key]
print(sum)