Вопрос задан 08.04.2025 в 12:29. Предмет Информатика. Спрашивает Рябченко Саша.

Дан массив, состоящий из целых чисел. Известно, что числа упорядочены по неубыванию (то есть каждый следующий элемент не меньше предыдущего). Напишите программу, которая определит количество различных чисел в этом массиве.
Входные данные

Сначала задано число N — количество элементов в массиве (1N100). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел.
Выходные данные

Необходимо вывести единственное число - количество различных чисел в массиве.
Примеры
Входные данные
5
1 1 1 1 1
Выходные данные
1

Перейти к ответам

Ответы на вопрос

Отвечает Мосин Олег.

Для решения этой задачи можно воспользоваться несколькими подходами. Наиболее простой способ — использовать свойства множества (set) в Python, так как множества автоматически удаляют дублирующиеся элементы. Ниже представлен подробный алгоритм и код.

Алгоритм решения:

  1. Прочитать входные данные:
    • Сначала читается число NN — количество элементов в массиве.
    • Затем считывается массив из NN элементов, которые упорядочены по неубыванию.
  2. Преобразовать массив в множество:
    • Множество хранит только уникальные значения.
  3. Вывести длину множества, так как она равна количеству различных чисел в массиве.

Реализация на Python:

python
# Считываем входные данные n = int(input()) # Читаем количество элементов array = list(map(int, input().split())) # Читаем массив чисел

# Преобразуем массив в множество, чтобы оставить только уникальные числа unique_numbers = set(array)

# Выводим количество уникальных чисел print(len(unique_numbers))

Пояснение кода:

  1. Считывание данных:
    • Функция input() считывает строки ввода.
    • map(int, input().split()) преобразует строку чисел в список целых чисел.
  2. Создание множества:
    • set(array) создает множество, удаляя дублирующиеся элементы.
  3. Вывод результата:
    • Функция len(unique_numbers) возвращает количество элементов в множестве, то есть количество уникальных чисел.

Пример работы программы:

Входные данные:

5 1 1 1 1 1

Пошаговая работа:

  1. N=5N = 5, массив [1,1,1,1,1][1, 1, 1, 1, 1].
  2. Преобразование массива в множество: {1}\{1\}.
  3. Длина множества: 11.

Выходные данные:

1

Второй пример:

Входные данные:
6 1 2 2 3 3 3
Пошаговая работа:
  1. N=6N = 6, массив [1,2,2,3,3,3][1, 2, 2, 3, 3, 3].
  2. Преобразование массива в множество: {1,2,3}\{1, 2, 3\}.
  3. Длина множества: 33.
Выходные данные:
3

Альтернативный способ:

Если использование множества нежелательно, можно решить задачу перебором:

  1. Пройти по массиву и сравнивать каждый элемент с предыдущим.
  2. Если элемент отличается от предыдущего, увеличивать счетчик.

Код:

python
n = int(input()) array = list(map(int, input().split()))

# Подсчитываем количество уникальных чисел unique_count = 1 # Первый элемент всегда уникален for i in range(1, n): if array[i] != array[i - 1]: unique_count += 1

print(unique_count)

Этот подход также работает корректно, но использование множества более лаконично и читабельно.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос