int main() { list<int>mylist; //Делаем со списком, что хотим mylist.push_back(1); mylist.push_back(2); mylist.push_back(3); mylist.push_back(-4); mylist.push_back(5); for (auto i : mylist) { cout << i << " "; } cout << "\n"; //Удаляем последний отрицательный элемент auto it = mylist.end(); while (*it > 0) { if (it == mylist.begin()) { cout << "Not found.\n"; return 0; } it--; } //Делаем со списком, что хотим mylist.erase(it); for (auto i : mylist){ cout << i << " "; } return 0; }
Берем третьи байты и переводим в двоичную систему счисления:добавим в начале нулей, чтобы получилось 8 цифр. ← ← найдем маску. запишем с столбик. если элементы одинаковые, ставим соответствующее число, если элементы разные, ставим крестик: 00000101 00011101 000xx101 ← маска т.к. по правилу в маске, сначала идут единицы, переместим их в начало: 11xx0000 если бы по условию, надо было бы найти наименьшее возможное значение, то мы бы заменяли крестики(х) на нули. т.к. по условию необходимо наибольшее возможное значение, подставляем вместо крестиков(x), единицу и переведем в десятичную систему счисления:
#include <list>
using namespace std;
int main() {
list<int>mylist;
//Делаем со списком, что хотим
mylist.push_back(1);
mylist.push_back(2);
mylist.push_back(3);
mylist.push_back(-4);
mylist.push_back(5);
for (auto i : mylist) {
cout << i << " ";
}
cout << "\n";
//Удаляем последний отрицательный элемент
auto it = mylist.end();
while (*it > 0) {
if (it == mylist.begin()) {
cout << "Not found.\n";
return 0;
}
it--;
}
//Делаем со списком, что хотим
mylist.erase(it);
for (auto i : mylist){
cout << i << " ";
}
return 0;
}