Задача
Дана последовательность чисел. Вам следует упорядочить их по неубыванию последней цифры, а при равенстве последних цифр – по неубыванию самих чисел.
Входные данные
Первая строка содержит число [latex] n [/latex] ([latex] 1 \leqslant n \leqslant 100 [/latex]), а вторая — сами натуральные числа, не превышающие [latex] 32000 [/latex].
Выходные данные
Выведите последовательность чисел, упорядоченную согласно условию.
Тесты
№ | Входные данные | Выходные данные |
1 | 7 12 15 43 13 20 1 15 |
20 1 12 13 43 15 15 |
2 | 10 82 22 19 90 34 17 588 921 200 121 |
90 200 121 921 22 82 34 17 588 19 |
3 | 4 162 9801 37 14 |
9801 162 14 37 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool comp (const int& a, const int& b) { if (a % 10 == b % 10) return (a < b); else return a % 10 < b % 10; } int main() { int n, a; vector<int> array; cin >> n; for (int i = 0; i < n; i++) { cin >> a; array.push_back(a); } sort (array.begin(), array.end(), comp); for (int a = 0; a < n; a++) { cout << array[a] << " "; } return 0; } |
Решение задачи
Для решения этой задачи необходимо объявить вектор, который будет хранить все числа, введенные пользователем, например,
array.
Сортировку будем проводить с помощью функции
sort. Для правильного упорядочивания чисел, напишем функцию компаратор
comp, для сравнения чисел и решения, стоит ли их менять местами.
В конце выводим вектор
array.