Ошибка выполнения: NZEC

Я продолжаю получать ошибку времени выполнения при отправке сообщения о проблеме на 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();
        }
    }
}

Пожалуйста, помогите мне здесь, учитывая, что проблема несложная.

Спасибо !


person user1549287    schedule 24.07.2012    source источник
comment
Кроме того, вам следует подумать о сокращении примера кода только до того, что необходимо для возникновения ошибки.   -  person millimoose    schedule 24.07.2012
comment
Ошибка передается по электронной почте, поэтому все, что я знаю, это то, что она вызвана каким-то необработанным исключением.   -  person user1549287    schedule 24.07.2012
comment
Я попытался разместить блоки try, catch в другом месте, но ошибка все еще сохраняется, поэтому мне пришлось опубликовать это здесь!   -  person user1549287    schedule 24.07.2012
comment
Ничто не мешает вам на самом деле запустить свой код над образцом ввода самостоятельно, чтобы увидеть, не сломается ли он и где.   -  person millimoose    schedule 24.07.2012
comment
Я тоже так делал. Удивительно, но все мои тестовые примеры работают просто отлично! :D   -  person user1549287    schedule 24.07.2012


Ответы (1)


Сам код работает нормально ... учитывая, что дан разумный ввод. Для другого ввода могут возникать ошибки, например:

  1. Что делать, если case не является целым числом?
  2. Что, если case — отрицательное целое число?

Итак, по мере того, как правки пытаются выполнить, нам нужно давать разумную обратную связь для непредвиденных вариантов использования.

Но для проблемы в ссылке есть и другие потенциальные проблемы. Переполнение? Переполнения не будет для действительно больших чисел, 2 ^ 32 больше, чем наибольшее число, но я заметил, что большое целое число может привести к ошибке OutOfMemory, поэтому я считаю, что этот фрагмент кода сводится к неэффективности и необходимости лучшего алгоритм для обработки больших целых чисел.

person demongolem    schedule 10.01.2014