0

在http://www.codechef.com/problems/LASTDIG提交问题时,我不断收到运行时错误。

我的代码如下:

public class Main {
    public static void main(String[] args) {
        try {
            Scanner in = new Scanner(System.in);
            int i,j;
            System.out.println("Enter the no. of test cases - ");
            int cases = in.nextInt();

            int[][] a = new int[cases][2];
            int[] lds = new int[cases]; 

            for(i=0; i<cases; i++) {
                for(j=0; j<2; j++) {
                    a[i][j]=in.nextInt();
                }
            }

            for(j=0; j<cases; j++) {
                lds[j] = 0;
                int LENGTH = a[j][1] - a[j][0] +1;
                int[] arr = new int[LENGTH];
                //System.out.printf("%d\n",LENGTH);
                int[]sum = new int[LENGTH];

                for(i=0; i<LENGTH; i++) {
                    sum[i] = 0;
                    arr[i] = a[j][0] + i;
                }

                for(i=0; i<LENGTH; i++) {
                    int temp = arr[i];
                    while(temp !=0 ) {
                        int r = temp%10;
                        temp /= 10;

                        if (r%2 == 0) sum[i] += r*2;
                        else sum[i] += r;
                    }
                }

                for(i=0; i<LENGTH; i++){
                    lds[j] += sum[i]%10;
                }

            }

            for(i=0; i<cases; i++) {
                System.out.printf("%d\n",lds[i]);
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

考虑到这个问题很简单,请在这里帮助我。

谢谢 !

4

1 回答 1

0

代码本身运行良好......鉴于给出了合理的输入。对于不同的输入,可能会出现如下错误:

  1. 如果个案不是整数怎么办?
  2. 如果个案是负整数怎么办?

因此,当编辑试图完成时,我们需要为不可预见的用例提供合理的反馈。

但是对于链接中的问题,还有其他潜在的问题。溢出?对于非常大的数字,不会存在溢出,2^32 大于最大数字,但我确实注意到一个大整数会产生 OutOfMemory 错误,所以我认为这段代码归结为效率低下,需要更好的处理较大整数的算法。

于 2014-01-10T18:01:23.597 回答