Python中的NZEC错误

时间:2012-02-25 13:42:43

标签: python python-2.7

这是一段简单的代码,假设读取n个数字并假设打印出这些n个数字中有多少个数字可以被k整除

n=int(raw_input())
k=int(raw_input())
ans=0
while n > 0:
  t=int(raw_input())
  if(t%k == 0):
    ans = ans + 1
  n = n - 1
print ans 

我在codechef上遇到了NZEC错误。有人能指出问题出在哪里吗?自上周以来,这个NZEC错误让我感到困扰。我是python的新手,在互联网上搜索过很多东西,却找不到具体的东西。当堆栈大小超出限制时,我得到了NZEC错误的答案。但是我的代码有什么问题?

5 个答案:

答案 0 :(得分:5)

我认为codechef问题是this one。您应该考虑到n和k的值大约是 10 ^ 7 ,这可能是您的程序出现问题。

此外,n和k在同一行。您正在使用 raw_input 两次,因此您正在阅读两行。这可以通过使用:

来解决
n, k = raw_input().split(" ")
n = int(n)
k = int(k)

如果这样做无效,您可以尝试循环使用 xrange ,或使用其他算法。

答案 1 :(得分:1)

当您的代码抛出异常时,

codechef会向您显示NZEC。发生此错误的原因有很多,包括但不限于不安全的输入处理,对不存在/不正确的数据进行操作,除以零。

在您的情况下,问题可以通过Reshure提到解决。虽然处理其他情况将是特定于代码的,但我们可以编程以避免由于不安全的输入处理而导致的NZEC。我的想法是立即读取输入并使用空格作为分隔符对其进行标记。

import sys
tokenizedInput = sys.stdin.read().split()    # Delimit input by whitespaces
# Now iterate over tokenizedInput.

在您的情况下,这将如下:

n, k = map(int, tokenizedInput[:2])
ans = 0
for _ in xrange(2, n):
    t = int(tokenizedInput[_])
    if t%k == 0:
        ans = ans + 1
print ans

答案 2 :(得分:1)

您收到NZEC错误,因为当您在python中输入空格分隔的整数时,它被视为单个字符串而不是C,C ++和Java中的两个整数: 在你的情况下,这应该工作:

n,k=map(int,raw_input().split())

同样在将来记住,输入一个在python中用空格分隔的整数数组是:

a=map(int,raw_input().split())

答案 3 :(得分:0)

对于pyth-3.4

n,k=[int(x) for x in input().split()]
count=0
while n>0:
    n-=1
    tmp=int(input())
    if tmp%k==0:
        count+=1
print (count)

答案 4 :(得分:0)

尝试一下,除了我在我的CODECHEF代码中所做的以外,它的工作原理

try: 
    n , k = map(int , input().split())
    ans=0
    while n > 0:
        t=int(input())
        if(t%k == 0):
            ans = ans + 1
        n = n - 1
        print(ans) 
except:
    pass