如果对于每对数字ai,aj,(i≠j),阵列a被称为美丽,则存在ak使得ak = ai * aj。注意,k也可以等于i或j。找出给定的数组a是否漂亮!
INPUT:
输出:
为什么我收到运行时错误?
T = input()
i = 0
while i < T:
n = input()
a = raw_input()
k = a.split(" ")
for i in range(n):
k[i] = int(k[i])
for i in range(n):
for j in range(n):
if i!=j:
if a[i]*a[j] not in a:
print "no"
sys.exit()
print "yes"
i = i + 1
我已经编辑了我的代码,但这也给了我错误的答案。
答案 0 :(得分:0)
我不知道你得到了什么错误所以我无法评论,但你的逻辑似乎已经消失了。尝试将-20,-15,-4,5
作为输入。当它显然不是时,它会说是美丽的。您只是检查数组中两个最大元素的乘积是否在数组中。
答案 1 :(得分:0)
通过查看你的代码可以告诉你,你误解了问题的某些部分,这是我在阅读你的问题后提出的,并且可能有一个更强大和优化的方法来解决这个问题。
import sys
T = input()
i = 0
while i < T:
n = int(raw_input())
a = map(int, raw_input().split(' '))
mem = {}
for j in range(n):
mem[a[j]] = j
for k in mem.keys():
for j in range(mem[k]+1 , n):
if k*a[j] in mem:
print "yes"
sys.exit()
print "no"
i+=1