Выбор ответа Junior Задачи на Java спрашивают часто обновлено

Переполнение при подсчёте пар

Вопрос

Нужно посчитать число пар i < j среди 10⁵ одинаковых элементов в переменной int count. Что получится?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Переполнение: пар около 5·10⁹, больше Integer.MAXVALUE. Пар n·(n−1)/2 ≈ 5·10⁹, а int вмещает около 2.1·10⁹.

Варианты ответа

  1. Всё нормально: 10⁵ элементов спокойно помещается в int
  2. Переполнение: пар около 5·10⁹, больше Integer.MAX_VALUEправильный ответ
  3. Будет ArithmeticException в момент переполнения счётчика
  4. Компилятор сам расширит int count до long при переполнении

Разбор

Пар n·(n−1)/2 ≈ 5·10⁹, а int вмещает около 2.1·10⁹. Переполнение в Java молчит: получится отрицательное или просто неверное число. Исключение бросают только Math.addExact и родственники. Автоматического расширения нет. Счётчики пар и суммы сразу объявляют long.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.