Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';漂亮的阵列';CodeChef,如何输入数据_Python_Arrays_Input - Fatal编程技术网

Python ';漂亮的阵列';CodeChef,如何输入数据

Python ';漂亮的阵列';CodeChef,如何输入数据,python,arrays,input,Python,Arrays,Input,以下是问题陈述: 数组a被称为美丽的如果对于每一对数字ai,aj,(i ≠ j) ,存在一个ak,使得ak=ai*aj。注意,k可以是 也等于i或j 看看给定的数组a是否漂亮 输入 输入的第一行包含一个整数T,表示 测试用例。T测试用例如下 每个测试用例的第一行包含一个整数n,表示 a中的元素 下一行包含n个表示数组a的空格分隔整数。 输出 对于每个测试用例,输出包含“是”或“否”的单行 (不加引号)对应于问题的答案。 约束条件 1 ≤ T ≤ 106 1 ≤ n ≤ 105 Sum of n

以下是问题陈述:

数组a被称为美丽的如果对于每一对数字ai,aj,(i ≠ j) ,存在一个ak,使得ak=ai*aj。注意,k可以是 也等于i或j

看看给定的数组a是否漂亮

输入

输入的第一行包含一个整数T,表示 测试用例。T测试用例如下

每个测试用例的第一行包含一个整数n,表示 a中的元素

下一行包含n个表示数组a的空格分隔整数。 输出

对于每个测试用例,输出包含“是”或“否”的单行 (不加引号)对应于问题的答案。 约束条件

1 ≤ T ≤ 106
1 ≤ n ≤ 105
Sum of n over all the test cases ≤ 106
-109 ≤ ai ≤ 109
范例

输入

三,

二,

01

二,

1 2

二,

5.6

输出:

没有

我是CodeChef新手,不知道如何正确接收输入,我有一些代码试图用来解决漂亮的数组问题,但当我运行它时,我得到了一个NZEC

from collections import Counter
numCase = int(input())
for i in range(numCase):
    length = input()
    array = Counter(input().split(''))
    answer = "no"
    for i in range(length - 1):
        if array[i] == 0 or array[i] == 1:
            answer = "yes"

    print(answer)

当我更改输入并手动输入一些数据时,代码对我起作用,有人能告诉我为什么这个代码不起作用吗?谢谢

我想你没有检查数组的最后一个元素,因为范围有限。试试这个

for i in range(length)
首先,当您手动运行代码时,它会崩溃。您至少需要将
length=input()
更改为
length=int(input())
。NZEC是一个运行时错误,它是CodeChef,告诉您代码正在崩溃

其次,最好不要参考外部站点。给你潜在的回答者一个战斗的机会,给我们这个问题。查找CodeChef、它是什么以及在哪里可以找到问题声明都不方便。此外,CodeChef可能会消失,或者可能会关闭,然后您显然无法得到答案。话虽如此,我在你的问题中提出了问题陈述

最后,您的解决方案在逻辑方面存在根本性缺陷(不仅仅是崩溃)。仅检查数组中的前两项是否分别为
0
1
,是不够的。不过,你已经接近找到一个有效的解决方案了。观察以下输入/输出:

1

3

1 -4 -1

# Output should be "no", since -4 * -1 == 4, and 4 is not in the list.
此外,考虑

1

5

0 1 2 3 4 5

# Output should be "no" since 2 * 3 == 6, but 6 is not in the list
基本情况(如果数组len==1)是“是”输出。这在我看来是不正确的(我不能等于j,对于长度为1的输入,对没有很好的定义,我可以继续…)。所以我愿意给你们这部分解决方案,因为它也愚弄了我,而且还不是特别清楚

作为旁注,我似乎在这个线程中看到了一些对问题的误解,所以我将尝试添加一些澄清

数组a被称为美丽的如果对于每一对数字ai,aj,(i ≠ j) ,存在一个ak,使得ak=ai*aj。注意,k可以是 也等于i或j

这里的重要词语是“对于每一对数字ai,aj存在ak”,而不仅仅是某一对。这意味着如果我们有输入数组
[2,3,6]
,答案是“否”,因为3*6==18,但18不在数组中。很容易认为答案应该是“是”,因为2*3==6,但这只是满足关系的一对。这个问题清楚地表明,每一对都必须满足这个关系

这是我的解决办法。我很想不发布它,但如果你真的被卡住了,这可以作为你的参考。我强烈建议你不要马上考虑解决方案,至少给自己一整天的时间来解决它,并且一定要考虑它。通过将我的解决方案复制/粘贴到CodeChef中,您不会学到任何东西。将鼠标悬停在下面的部分以查看我的解决方案

numCase=int(输入()) 对于范围内的i(numCase): 长度=int(输入()) 数组=[int(x)表示输入()中的x。拆分(“”)] num_neg_ones=len([x表示数组中的x,如果x=-1]) num_ones=len([x=1时x代表数组中的x]) num_other=len([x表示数组中的x,如果x不在[0,-1,1]])) 回答=“是” 如果num_other>1: 回答=“否” 如果num_other==1且num_neg_ones>0: 回答=“否” 如果num_neg_ones>1且num_ones==0: 回答=“否” 打印(答案)


在这之后,我仍然会遇到同样的错误,虽然这是我的代码中的一个错误NZEC错误似乎意味着非零退出代码,但我不确定这意味着什么我是我的代码。你可以给我你尝试的问题的链接,因为可能我误解了你的问题和逻辑。但是对于这个问题,我猜你的逻辑是不完整的。想想数组{2,3,6}它有一对(ai和aj)结果是ak(6),但是根据你的逻辑,它会结果为假,但它是真的。是吗?是的,我理解,但这只是一种测试,以确定如何从站点获取输入,除非代码中使用了额外的测试数据,否则我仍然不确定为什么它不起作用,但我会尝试一个更完整的解决方案。@MohammadNadeem如果你有数组a={2,3,6},那么解决方案应该是“否”。根据问题陈述,所有对都必须存在[k]。例如,a[1]*a[2]==18(即,3*6==18),但18不在a中。 numCase = int(input()) for i in range(numCase): length = int(input()) array = [int(x) for x in input().split(' ')] num_neg_ones = len([x for x in array if x == -1]) num_ones = len([x for x in array if x == 1]) num_other = len([x for x in array if x not in [0, -1, 1]]) answer = "yes" if num_other > 1: answer = "no" if num_other == 1 and num_neg_ones > 0: answer = "no" if num_neg_ones > 1 and num_ones == 0: answer = "no" print(answer)