这是我写的代码,但是提交不起作用。其显示RE(NZEC)错误
在Codechef八月长挑战赛上,AUG21C>;CHFINVNT,这是我写的代码,但是提交不起作用。它显示了RE(NZEC)错误。 输出仍然有效。。。。但它不会屈服。请帮忙
/* package codechef; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
Scanner scr = new Scanner(System.in);
try {
int T = scr.nextInt();
while(T-- > 0)
{
int N = scr.nextInt();
int p = scr.nextInt();
int K = scr.nextInt();
int[] A = new int[N];
for(int i=0; i<N; i++)
{
A[i%K]++;
}
int sum=0;
for(int i=0; i<p%K; i++)
{
sum+=A[i];
}
int add = (p - (p%K)) / K;
add++;
sum = sum + add;
System.out.println(sum);
}
}catch(Exception e){}
}
}
# 1 楼答案
显然,您的代码中有一个缺陷
NZEC
表示非零退出代码。你的代码可能触发了一个未触发的异常。虽然您有一个广泛的catch
语句,但在catch子句之外也有例外在问题陈述中,
N
可以大到10^9如果发生这种情况,
int[] A = new int[N];
将尝试分配该内存。这超出了内存限制。这可能是问题的根源。即使你可以分配内存,你也会达到时间限制:在CodeChef上,即使数到10^9也会失败与这个问题没有直接关系,但我想从软件工程和竞争编码最佳实践的角度对您的代码进行评论
拥有一个广泛的catch块将隐藏任何可能存在的异常。即使你得到一个索引越界异常,你也不能在你的测试中看到它。你可以避免捕捉到广泛的例外
您的代码没有正确的缩进。这使得阅读和阅读成为可能;调试很麻烦。尤其是在竞争性编程中,速度非常重要。因此,适当的压痕在这方面至关重要。您可以使用IDE来格式化代码
您的Java代码没有遵循Java的一般约定。其中一条规则是“局部变量以小写字母开头”。局部变量
A
和N
违反了该规则您提交的代码包含许多空行。在向StackOverflow提交代码时,删除不必要的行将简化阅读,并增加获得好答案的可能性