Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Федорчук Антон
- Лаба - 6
- Вариант-46.
- Ввести последовательность натуральных чисел {Aj}j=1...n (n<=1000).
- Упорядочить последовательность по невозрастанию суммы цифр числа, числа с одинаковыми суммами цифр
- дополнительно упорядочить по неубыванию произведения цифр числа,
- числа с одинаковыми суммами цифр и одинаковыми произведениями цифр
- дополнительно упорядочить по невозрастанию самого числа.
- (111 222 231 330 112 211 -> 330 231 222 211 112 111 )
- */
- #include <iostream>
- using namespace std;
- int sum_numbers(int a)
- {
- int sum = 0;
- while (a > 9)
- {
- sum += a % 10;
- a /= 10;
- }
- sum += a;
- return sum;
- }
- int mult_numbers(int b)
- {
- int mult = 1;
- while (b > 9)
- {
- mult *= b % 10;
- b /= 10;
- }
- mult *= b;
- return mult;
- }
- void swap(int& x, int& y)
- {
- int tmp = x;
- x = y;
- y = tmp;
- }
- int main()
- {
- int n;
- cin >> n;
- int mas[1000];
- for (int i = 0; i < n; i++)
- {
- cin >> mas[i];
- }
- for (int i = 0; i < n - 1; i++)
- {
- for (int j = i + 1; j < n; j++)
- {
- int isn = sum_numbers(mas[i]);
- int jsn = sum_numbers(mas[j]);
- if (isn < jsn)
- swap(mas[i], mas[j]);
- if (isn == jsn)
- {
- int imn = mult_numbers(mas[i]);
- int jmn = mult_numbers(mas[j]);
- if (imn > jmn)
- swap(mas[i], mas[j]);
- if (imn == jmn)
- {
- if (mas[i] < mas[j])
- swap(mas[i], mas[j]);
- }
- }
- }
- }
- for (int i = 0; i < n; i++)
- {
- cout << mas[i] << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement