你将得到两个包含n个元素的数组A和B。选择一对元素(x,y),使得:
• x属于数组A
• y属于数组B
• GCD(x,y)是所有(x,y)对中最大的。
如果存在多个具有最大GCD的这样的对,则选择具有最大和的那个。打印出该最大和对的元素之和。这是来自Hackerrank weekofcode 34的问题。
from fractions import gcd
from itertools import product
n = int(input().strip()) #two arrays of equal length
A = set(map(int, input().strip().split(' '))) #array1
B = set(map(int, input().strip().split(' '))) # arry2
output_sum=[]
output_GCD=[]
c=list(product(A,B))
for i in c:
temp1=i[0]
temp2=i[1]
sum_two=temp1+temp2
temp3=gcd(temp1,temp2)
output_GCD.append(temp3)
output_sum.append(temp1+temp2)
temp=[]
for i in range(len(output_GCD)):
if(output_GCD[i]==max(output_GCD)):
temp.append(output_sum[i])
print(max(temp))
这个解决方案适用于较小的条件,但在大多数测试用例中超时了,请帮助我改进我的解决方案。