Используя контейнеры и алгоритмы стандартной библиотеки шаблонов, решить
следующие задачи (использовать только алгоритмы стандартной библиотеки шаблонов):
Даны две последовательности целых чисел. Удалить из первой последовательности все элементы, встречающиеся во второй. Во второй последовательности
после каждого элемента, кратного , вставить новый элемент. Отсортировать
данные последовательности. Объединить их в одну отсортированную последовательность.
На C++.
#include
#include
#include
#include
using namespace std;
vector foo(const vector& A1, const vector& A2)
{
vector box;
for (const auto Q1 : A1) if (find(A1.begin(), A2.end(), Q1) == A2.end()) box.push_back(Q1);
return box;
}
int main()
{
int Q1, Q2, N1, N2, x;
vector A1, A2; // обЪевляем интовые вектора
vector ::iterator B1, B2; // обращаемся к интовым ячейкам STL
cout <<" x = ";
cin >> x;
cout << "Введите количество ячеик 1-ог вектора ";
cin >> N1; // вводим количество ячеик 1-ог вектора
for (int i = 0; i < N1; i++)
{
cout <<"Введите элемент с номером "<< i <<": ";
cin >> Q1; // Заполняем ячейки 1-ог вектора числами
A1.push_back(Q1); // освобождаем место в 1-ом векторе
}
cout << "Введите количество ячеик 2-ог вектора ";
cin >> N2; // вводим количество ячеик 2-ог вектора
for (int i = 0; i < N2; i++)
{
cout <<"Введите элемент с номером "<< i <<": ";
cin >> Q2; // Заполняем ячейки 2-ог вектора числами
A2.push_back(Q2); // освобождаем место во 2-ом векторе
}
/*
1-ое условие
*/
{
A1 = foo(A1, A2);
for (const auto Q1 : A1) cout << Q1 << ' ';
cout <<'\n';
cout << endl;
}
/*
2-ое условие
*/
{
}
/*
3-е условие
*/
{
}
/*
4-ое условие
*/
{
}
return 0;
}
1-ое условие по какой-то непонятной мною причиной не работает.
Остальные вообще беспонятия как делать.
1-ое условие:
Удалить из первой последовательности все элементы, встречающиеся во второй.
2-ое условие:
Во второй последовательности после каждого элемента, кратного X, вставить новый элемент.
3-е условие:
Отсортировать данные последовательности.
4-ое условие:
Объединить их в одну отсортированную последовательность.
Если кто-то знает как сделать хотя бы одно условие
Нужно передать водителю сумму, не меньшую суммарной стоимости всех пассажиров, передавших деньги. Очевидно, чтобы купюр было как можно меньше, сами купюры должны иметь как можно больший номинал. Кроме того, тем, кто передал 10 рублей, сдачу давать не нужно, передавшему 50 рублей – сдачей можно вернуть не более четырех десятирублевок, передавшему 100 рублей – не больше четырех 10-рублевой и 50-рублевку или не более девяти 10-рублевок.
Например, подойдет такое решение: считываем n10, n50 и n100 – количество 10-рублевок, 50-рублевок и 100-рублевок. Отдаем по четыре 10-рублевки каждому, заплатившему 50 рублей, потом тем, кто отдал 100 рублей. Оставшиеся 10-рублевки по 5 штук отдаем на сдачу со 100 рублей (таких людей k), и если кто-то остался без сдачи, пытаемся вручить им по 50 рублей.
Реализация (python 3):
n10, n50, n100 = map(int, input().split())
n10 = max(n10 - 4 * (n50 + n100), 0)
k = min((n10 + 4) // 5, n100)
n10 = max(n10 - 5 * k, 0)
n50 = max(n50 - (n100 - k), 0)
print(n10 + n50 + n100)
Пример ввода:
7 2 1
Пример вывода:
2