有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

这是我写的代码,但是提交不起作用。其显示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) 个答案

  1. # 1 楼答案

    显然,您的代码中有一个缺陷NZEC表示非零退出代码。你的代码可能触发了一个未触发的异常。虽然您有一个广泛的catch语句,但在catch子句之外也有例外

    在问题陈述中,N可以大到10^9

    如果发生这种情况,int[] A = new int[N];将尝试分配该内存。这超出了内存限制。这可能是问题的根源。即使你可以分配内存,你也会达到时间限制:在CodeChef上,即使数到10^9也会失败

    与这个问题没有直接关系,但我想从软件工程和竞争编码最佳实践的角度对您的代码进行评论

    • 拥有一个广泛的catch块将隐藏任何可能存在的异常。即使你得到一个索引越界异常,你也不能在你的测试中看到它。你可以避免捕捉到广泛的例外

    • 您的代码没有正确的缩进。这使得阅读和阅读成为可能;调试很麻烦。尤其是在竞争性编程中,速度非常重要。因此,适当的压痕在这方面至关重要。您可以使用IDE来格式化代码

    • 您的Java代码没有遵循Java的一般约定。其中一条规则是“局部变量以小写字母开头”。局部变量AN违反了该规则

    • 您提交的代码包含许多空行。在向StackOverflow提交代码时,删除不必要的行将简化阅读,并增加获得好答案的可能性