Advertisement
Rayzven

6laba

Feb 10th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. /*Федорчук Антон
  2. Лаба - 6
  3. Вариант-46.
  4. Ввести последовательность натуральных чисел {Aj}j=1...n (n<=1000).
  5. Упорядочить последовательность по невозрастанию суммы цифр числа, числа с одинаковыми суммами цифр
  6. дополнительно упорядочить по неубыванию произведения цифр числа,
  7. числа с одинаковыми суммами цифр и одинаковыми произведениями цифр
  8. дополнительно упорядочить по невозрастанию самого числа.
  9. (111 222 231 330 112 211 -> 330 231 222 211 112 111 )
  10. */
  11. #include <iostream>
  12.  
  13. using namespace std;
  14.  
  15. int sum_numbers(int a)
  16. {
  17.     int sum = 0;
  18.     while (a > 9)
  19.         {
  20.         sum += a % 10;
  21.         a /= 10;
  22.         }
  23.     sum += a;
  24.     return sum;
  25. }
  26.  
  27. int mult_numbers(int b)
  28. {
  29.     int mult = 1;
  30.     while (b > 9)
  31.         {
  32.         mult *= b % 10;
  33.         b /= 10;
  34.         }
  35.     mult *= b;
  36.     return mult;
  37. }
  38.  
  39. void swap(int& x, int& y)
  40. {
  41.     int tmp = x;
  42.     x = y;
  43.     y = tmp;
  44. }
  45.  
  46. int main()
  47. {
  48.     int n;
  49.     cin >> n;
  50.     int mas[1000];
  51.     for (int i = 0; i < n; i++)
  52.         {
  53.         cin >> mas[i];
  54.         }
  55.  
  56.     for (int i = 0; i < n - 1; i++)
  57.     {
  58.         for (int j = i + 1; j < n; j++)
  59.         {
  60.             int isn = sum_numbers(mas[i]);
  61.             int jsn = sum_numbers(mas[j]);
  62.             if (isn < jsn)
  63.                 swap(mas[i], mas[j]);
  64.             if (isn == jsn)
  65.             {
  66.                 int imn = mult_numbers(mas[i]);
  67.                 int jmn = mult_numbers(mas[j]);
  68.                 if (imn > jmn)
  69.                     swap(mas[i], mas[j]);
  70.                 if (imn == jmn)
  71.                 {
  72.                     if (mas[i] < mas[j])
  73.                         swap(mas[i], mas[j]);
  74.                 }
  75.             }
  76.         }
  77.     }
  78.     for (int i = 0; i < n; i++)
  79.     {
  80.         cout << mas[i] << " ";
  81.     }
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement