我是Codechef-SnackDown 2019的参与者,这是我解决这个问题的尝试:
def f1(L):
c=len(L)
if(c==2):
return 1
x=L.count(L[c-1])
if(x==1):
count=L.count(L[c-2])*f1(L[:c-2])
elif (x==c):
count=int(x*(x-1)/2)
else:
if(x%2==0):
count=int(x*(x-1)/2)*f1(L[:c-x])
else:
count=int(x*(x-1)/2)*f1(L[:c-x+1])
return count%1000000007
t=int(input())
for i in range(t):
n=int(input())
L =[int(x) for x in input().split()]
L.sort()
print(f1(L))
我检查了此代码的示例测试用例并通过了,但是当我对codechef编译器运行此代码时,它给出了NZEC错误。现在在NZEC中研究python时,它说如果输入不正确或不正确则抛出NZEC列表索引超出范围。基于给定的问题约束,我没有发现列表索引超出范围的情况。我们将不胜感激。