Ошибка выполнения (NZEC) в простом коде - PullRequest
6 голосов
/ 25 марта 2011

Я получаю ошибку времени выполнения (NZEC) при запуске следующего кода в SPOJ.Я был бы очень благодарен, если бы кто-нибудь из вас любезно указал, что происходит.

//0<=A<=B<=10^18, 1<=N<=10^18
using System;
class any
{
static void Main()
 {
    long t = long.Parse(Console.ReadLine());
    ulong a, b, n;

    for(long k = 0; k < t; k++)
     {
        string[]s = Console.ReadLine().Split(' ');
        a = ulong.Parse(s[0]);
        b = ulong.Parse(s[1]);
        n = ulong.Parse(s[2]);
        Console.WriteLine(diviEntre2(a, b, n));
     }
 }
static ulong diviEntre2(ulong f, ulong c, ulong n)
{
   ulong k, s, m;

    if (f == c && c % n == 0 && f != 0) k = c/n;

    else
     {
      s = f/n;
      m = c/n;

      k = m - s;
     }

  return k;
}
}

Ответы [ 6 ]

18 голосов
/ 06 марта 2012

NZEC означает Нулевой код выхода . Для пользователей C это будет сгенерировано, если у вашего основного метода нет оператора return 0; . Другие языки, такие как Java / C ++, могут генерировать эту ошибку, если выдают исключение.

8 голосов
/ 05 июня 2012

Для Java NZEC возвращается, когда код вызывает исключение. Для проблем с Spoj и т. Д. Часто последняя строка во входных данных вызывает это исключение, если контрольные примеры не завершаются строкой идентификатора.

В таких случаях полезный хак - это обернуть ваш код в попытку - поймать и просто вернуть, если есть исключение. Пойманное исключение сигнализирует о том, что вы достигли конца ввода.

public static void main(String[] args) {
    temp program = new temp();
    try{
    program.begin();
    } catch(Exception e){
        return;
    }
}
7 голосов
/ 02 декабря 2012

У меня было такое же сообщение при программировании на Java. Оказалось, я должен был поместить свой исходный код в пакет по умолчанию (или вообще не менять пакет). Надеюсь, это кому-нибудь поможет.

2 голосов
/ 19 января 2012

Я не знаю, что возвращает Java, когда основная функция void, но это может быть причиной этого сообщения об ошибке. Spoj также проверяет возвращаемое значение вашей программы и ожидает 0 (код успеха / отсутствия ошибки). Я полагаю, что изменение основной функции, возвращающей 0, исправит это сообщение об ошибке.

У меня была такая же ошибка с программой на Си, и добавление возврата 0 изменило ошибку на принятую.

1 голос
/ 06 ноября 2012

Эта ошибка также может означать, что программа не работает должным образом, то есть вывод не является ожидаемым выводом ... хотите верьте, хотите нет, это большая вероятность того, что ваш код просто не выполняет то, что задает вопрос. ...

Цитирование по приведенной в конце ссылке ->

NZEC (ненулевой код выхода) - помогает сообщать о сбое из WA с переводимые языки; WA = Неправильный ответ.

см. Эту ссылку Система SPOJ

0 голосов
/ 21 апреля 2013

Я получил NZEC по программе cpp для задачи 'EKO'. Я делал объявление массива прямо перед оператором int main(). Я переместил объявление в основную функцию, и решение было принято.

У меня обычно есть объявление массива вне функции main, но в этом случае массив был большим (int array[100001]). Так что можно объявить ваши массивы внутри main.

...