Вопрос задан 17.01.2025 в 19:23. Предмет Информатика. Спрашивает Семилетова Дарья.

Напишите программу, которая сортирует элементы массива по возрастанию последней цифры десятичной записи чисел.

Входные данные
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 10000 .

Выходные данные
Программа должна вывести в одной строке элементы массива, отсортированного в порядке возрастания последней цифры в десятичной записи чисел, разделив их пробелами. Числа, у которых последняя цифра одинаковая, должны быть выведены в том же порядке, в котором они стояли в исходной последовательности.

Примеры
входные данные
6
219 234 890 81 73 96
выходные данные
890 81 73 234 96 219

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

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

Отвечает Большакова Лера.

Для решения задачи требуется отсортировать массив чисел по возрастанию их последних цифр. Поскольку необходимо сохранять порядок для чисел с одинаковыми последними цифрами, удобно использовать метод сортировки, который сохраняет порядок элементов при равных ключах. Это называется "устойчивая сортировка".

Шаги решения задачи

  1. Считать входные данные: Мы считываем число NN — размер массива, и затем сам массив чисел.
  2. Определить критерий сортировки: Поскольку мы сортируем по последней цифре, для каждого числа будем использовать остаток от деления на 10.
  3. Сортировка с использованием лямбда-функции: Встроенная функция sorted() позволяет задать ключ сортировки. В нашем случае ключом будет последняя цифра каждого числа.
  4. Вывод результата: После сортировки выводим массив чисел в одной строке через пробелы.

Реализация программы

На Python решение может выглядеть следующим образом:

python
# Считываем размер массива n = int(input().strip())

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

# Сортируем массив по последней цифре числа с сохранением исходного порядка при совпадении последних цифр sorted_array = sorted(array, key=lambda x: x % 10)

# Выводим отсортированный массив в одной строке, разделяя числа пробелами print(" ".join(map(str, sorted_array)))

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

  1. Считывание данных:

    • n = int(input().strip()) — считываем и преобразуем первую строку к целому числу NN.
    • array = list(map(int, input().strip().split())) — считываем вторую строку, разбиваем её на отдельные числа и преобразуем их к целому типу, чтобы сохранить в виде списка.
  2. Сортировка:

    • sorted_array = sorted(array, key=lambda x: x % 10) — используем функцию sorted(), задавая ключ сортировки key=lambda x: x % 10, который возвращает последнюю цифру числа. sorted() по умолчанию устойчива, поэтому порядок элементов с одинаковыми ключами сохраняется.
  3. Вывод результата:

    • print(" ".join(map(str, sorted_array))) — преобразуем числа из списка sorted_array к строкам и объединяем их через пробел для вывода.

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

Рассмотрим входные данные из примера:

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

6 219 234 890 81 73 96

Пошаговое выполнение:

  1. Определим последние цифры каждого числа:

    • 219 → 9
    • 234 → 4
    • 890 → 0
    • 81 → 1
    • 73 → 3
    • 96 → 6
  2. Сортируем по возрастанию последних цифр:

    • Числа в порядке возрастания последних цифр: 890, 81, 73, 234, 96, 219
  3. Вывод:

    890 81 73 234 96 219

Вывод

Таким образом, программа выводит числа в требуемом порядке.

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

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

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

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