Advertisement
Arhons

Untitled

Apr 4th, 2022
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. int factorial(int N)
  5. {
  6.     if (N > 0)
  7.     {
  8.         return N * factorial(N - 1);
  9.     }
  10.     else if (N == 0)
  11.     {
  12.         return 1;
  13.     }
  14.     else
  15.     {
  16.         return 0;
  17.     }
  18. }
  19. int addition(std::vector<int>& sl)
  20. {
  21.     int sum = 0;
  22.     for (int i = 0; i < sl.size(); i++)
  23.     {
  24.         sum += sl[i];
  25.     }
  26.     return sum;
  27. }
  28. int multiplication(std::vector<int>& m)
  29. {
  30.     int mult = 1;
  31.     for (int i = 0; i < m.size(); i++)
  32.     {
  33.         mult *= m[i];
  34.     }
  35.     return mult;
  36. }
  37. int arranqement_r(int n, int m)
  38. {
  39.     int res = 1;
  40.     for (int i = 1; i <= m; i++)
  41.     {
  42.         res *= n;
  43.     }
  44.     return res;
  45. }
  46. int arranqement(int n, int m)
  47. {
  48.     return factorial(n) / factorial(n - m);
  49. }
  50. int combination(int n, int m)
  51. {
  52.     return factorial(n) / (factorial(m) * factorial(n - m));
  53. }
  54. int combination_r(int n, int m)
  55. {
  56.     return factorial(n + m - 1) / (factorial(m) * factorial(n - 1));
  57. }
  58. int permutations(int n)
  59. {
  60.     return factorial(n);
  61. }
  62. int permutations_r(int n, std::vector<int> v)
  63. {
  64.  
  65.     int mult = 1;
  66.     for (int i = 0; i < v.size(); i++)
  67.     {
  68.         mult *= factorial(v[i]);
  69.     }
  70.     return factorial(n) / mult;
  71. }
  72. int main()
  73. {
  74.     setlocale(LC_ALL, "");
  75.     int x;
  76.     std::cout << "Введите нужную формулу" << std::endl;
  77.     std::cin >> x;
  78.     switch (x)
  79.     {
  80.     case 1:
  81.     {
  82.         std::vector<int> addentum;
  83.         std::cout << "Введите кол-вo элементов" << std::endl;
  84.         int num;
  85.         std::cin >> num;
  86.         std::cout << "Введите элементы" << std::endl;
  87.         for (size_t i = 0; i < num; i++)
  88.         {
  89.             int el;
  90.             std::cin >> el;
  91.             addentum.push_back(el);
  92.         }
  93.         std::cout << "По правилу суммы: ";
  94.         int r = addition(addentum);
  95.         std::cout << r << std::endl;
  96.         break;
  97.     }
  98.     case 2:
  99.     {
  100.         std::vector<int> multiplicand;
  101.         std::cout << "Введите кол-вo элементов" << std::endl;
  102.         int num;
  103.         std::cin >> num;
  104.         std::cout << "Введите элементы" << std::endl;
  105.         for (size_t i = 0; i < num; i++)
  106.         {
  107.             int el;
  108.             std::cin >> el;
  109.             multiplicand.push_back(el);
  110.         }
  111.         std::cout << "По правилу произведения: ";
  112.         int r = multiplication(multiplicand);
  113.         std::cout << r << std::endl;
  114.         break;
  115.     }
  116.     case 3:
  117.     {
  118.         std::cout << "Введите кол-во из n элементов по m" << std::endl;
  119.         int n, m;
  120.         std::cin >> n >> m;
  121.         std::cout << "Размещения с повторениями: ";
  122.         int r = arranqement_r(n, m);
  123.         std::cout << r << std::endl;
  124.         break;
  125.     }
  126.     case 4:
  127.     {
  128.         std::cout << "Введите кол-во из n элементов по m" << std::endl;
  129.         int n, m;
  130.         std::cin >> n >> m;
  131.         std::cout << "Размещения без повторений: ";
  132.         int r = arranqement(n, m);
  133.         std::cout << r << std::endl;
  134.         break;
  135.     }
  136.     case 5:
  137.     {
  138.         std::cout << "Введите кол-во из n элементов по m" << std::endl;
  139.         int n, m;
  140.         std::cin >> n >> m;
  141.         std::cout << "сочетания с повторениями: ";
  142.         int r = combination_r(n, m);
  143.         std::cout << r << std::endl;
  144.         break;
  145.     }
  146.     case 6:
  147.     {
  148.         std::cout << "Введите кол-во из n элементов по m" << std::endl;
  149.         int n, m;
  150.         std::cin >> n >> m;
  151.         std::cout << "сочетания без повторений: ";
  152.         int r = combination(n, m);
  153.         std::cout << r << std::endl;
  154.         break;
  155.     }
  156.     case 7:
  157.     {
  158.         std::cout << "Введите кол-во из n элементов" << std::endl;
  159.         int n;
  160.         std::cin >> n;
  161.         std::cout << "перестановки без повторений: ";
  162.         int r = permutations(n);
  163.         std::cout << r << std::endl;
  164.         break;
  165.     }
  166.     case 8:
  167.     {
  168.         std::vector<int> kortej;
  169.         std::cout << "Введите кол-во из n элементов и кол-во повторяющихся элементов" << std::endl;
  170.         int n, k;
  171.         std::cin >> n >> k;
  172.         std::cout << "Введите кол-во повторений каждого повторяющегося элемента" << std::endl;
  173.         for (size_t i = 0; i < k; i++)
  174.         {
  175.             int m;
  176.             std::cin >> m;
  177.             kortej.push_back(m);
  178.         }
  179.         std::cout << "перестановки с повторениями: ";
  180.         int r = permutations_r(n, kortej);
  181.         std::cout << r << std::endl;
  182.         break;
  183.     }
  184.     }
  185. }
  186.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement