Ошибка NZEC в Python - PullRequest
       20

Ошибка NZEC в Python

4 голосов
/ 25 февраля 2012

это простой фрагмент кода, который предполагает чтение 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 

Я получил ошибку NZEC для этогоcodechef.Может кто-нибудь указать, в чем проблема?Эта ошибка NZEC очень беспокоила меня с прошлой недели.Я новичок в Python и много искал в интернете, но не смог найти ничего конкретного.Я получил ответ, что ошибка NZEC возникает, когда размер стека выходит за пределы.Но в чем проблема с моим этим кодом?

Ответы [ 4 ]

5 голосов
/ 01 марта 2012

Полагаю, вопрос кодефа: , этот . Вы должны принять во внимание, что значения n и k равны 10 ^ 7 , что может быть проблемой для вашей программы.

Кроме того, n и k находятся на одной строке. Вы используете raw_input дважды, поэтому вы читаете две строки. Это можно решить с помощью:

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

Если это не поможет, вы можете вместо этого попробовать цикл xrange или использовать другой алгоритм.

1 голос
/ 16 октября 2016

Вы получаете ошибку NZEC, потому что когда вы вводите целые числа через пробел в python, они обрабатываются как одна строка, а не как два целых числа, как в C, C ++ и Java: В вашем случае это должно работать:

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

Также в будущем помните, что для ввода целочисленного массива, разделенного пробелами в python, необходимо:

a=map(int,raw_input().split())
1 голос
/ 06 января 2013

codechef будет показывать вам NZEC, когда ваш код вызывает исключение.Существует много возможных причин возникновения этой ошибки, в том числе небезопасная обработка ввода, работа с несуществующими / неверными данными, деление на ноль.

В вашем случае проблему можно решить следующим образом:упомянутый Решуре.Хотя обработка других случаев будет зависеть от кода, мы можем программировать таким образом, чтобы избежать 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
0 голосов
/ 28 мая 2016

Для пит-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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...