在SPOJ上运行以下代码时,我收到运行时错误(NZEC)。如果你们中的任何人愿意指出发生了什么,我将非常感激。
//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;
}
}
答案 0 :(得分:18)
NZEC代表非零退出代码。对于C用户,如果您的main方法没有 return 0; 语句,则会生成此用户。其他语言(如Java / C ++)如果抛出异常就会生成此错误。
答案 1 :(得分:8)
对于Java,当代码抛出异常时返回NZEC。对于Spoj等上的问题,如果测试用例没有被标识符字符串终止,则输入中的最后一行通常会导致此异常。
对于这种情况,一个有用的hack是将你的代码包装在try-catch中,如果有异常就返回。被捕获的异常表示您已达到输入结束。
public static void main(String[] args) {
temp program = new temp();
try{
program.begin();
} catch(Exception e){
return;
}
}
答案 2 :(得分:7)
在java中编程时我有相同的信息。事实证明我应该将我的源代码放在默认包中(或根本不更改包)。我希望这有助于某人。
答案 3 :(得分:2)
我不知道当main函数为void时java会返回什么,但这可能是此错误消息的原因。 Spoj还会检查程序的返回值,它预计为0(成功/非错误代码)。 我想改变你的主函数返回0将修复这个错误信息。
我刚刚在C程序中遇到了同样的错误,并且添加一个返回0会将错误更改为接受。
答案 4 :(得分:1)
此错误也可能意味着程序无法正常工作,即输出不是预期的输出...不管你信不信,这很可能是你的代码没有按照问题要求做的。 ...
从最后给出的链接引用 - &gt;
NZEC(非零退出代码) - 帮助告知WA的崩溃 解释语言; WA =错误答案。
请参阅此链接The SPOJ System
答案 5 :(得分:-1)
我在针对问题'EKO'的cpp计划上获得了NZEC。我正在int main()
语句之前做一个数组声明。我在主函数中移动了声明,解决方案被接受了。
我通常在main
函数之外有数组声明,但在这种情况下,数组很大(int array[100001]
)。因此可以在main
内声明您的数组。