Skip to main content

37. Статистика

Теория

Задача

Все числа двузначные положительные. Вывести на экран наименьшую цифру, которая встречаются среди этих натуральных чисел. Если таких нет, вывести НЕТ.

Такие задачи решаются через введение дополнительного массива статистики. Элемент массива статистики с индексом i хранит информацию о том, сколько раз мы встретили i-е значение.

В случае цифр i может принимать значения от 00 до 99 включительно, значит, нам понадобится массив статистики размера 1010

public class Main {
public static void main(String[] args) {
int[] arr = new int[]{20, 12, 52, 14, 42, 12, 51, 12, 42, 35, 24};

// массив статистики, в i-м элемете хранится количество
// цифр i в перебранных элементах массива
// т.к. цифр всего 10, то и элементов массива статистики нужно
// хранить 10
int[] s = new int[10];

// перебираем элементы массива
for (int i = 0; i < arr.length; i++) {
// получаем старшую цифру элемента
int a1 = arr[i] / 10;
// увеличиваем значение элемента массива статистики
// с индексом a1
s[a1]++;

// получаем младшую цифру элемента
int a2 = arr[i] % 10;
// увеличиваем значение элемента массива статистики
// с индексом a2
s[a2]++;
}

// индекс младшей цифры, встречающейся в числе
int d = -1;

// ищем наименьшую цифру, которая встречается
// среди введённых чисел
for (int i = 0; i < 10; i++)
// если цифра i встретилась в одном
// из чисел
if (s[i] != 0) {
// сохраняем цифру
d = i;
// останавливаем выполнение цикла
break;
}

// выводим индекс
System.out.println(d);
}
}

На консоль будет выведено:

4

Задание

Массив arr уже объявлен, вам нужно написать только команды, обрабатывающие его значения, т.е. только часть тела метода main().

  1. Все числа двузначные положительные. Вывести на экран наименьшую цифру, которая встречается среди этих натуральных чисел.
  2. Все числа двузначные положительные. Вывести на экран наибольшую цифру, которая НЕ встречается среди этих натуральных чисел. Если все цифры встречаются, то вывести НЕТ.
  3. Вывести на экран значение остатка от деления на 33, которое встречается чаще всего. Если несколько остатков встречаются одинаковое количество раз, вывести больший.
  4. Все числа двузначные положительные. Вывести на экран, верно ли, что каждый элемент массива встречается не менее 33-х раз (ДА/НЕТ).
  5. Программа должна вывести на экран такие две цифры, на которые чаще всего оканчиваются числа последовательности. Если есть несколько вариантов, программа должна вывести всех их через пробел в порядке возрастания.
  6. Все числа двузначные. Вывести на экран значение самого часто повторяющегося элемента массива. Если в массиве несколько таких элементов, вывести из них тот, который имеет самый меньший номер.
  7. Все числа не превышают 10810^8. Вывести на экран, какое количество разрядов встречается среди этих чисел чаще. Если таких несколько, то вывести большее.

Ссылка на контест