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; }
Для начала,надо посмотреть условие задачи,у нас в задаче условие такого: не должно быть чисел больше 27 и 18(т.к. Смотри первый пункт задачи. И числа должны быть записаны по неубыванию,то есть либо по возрастанию,либо должны быть равны друг другу(например,как 1616,1414,2424 и тд.). Следующий шаг будет,рассмотрим числа,которые нам предложены 1) первое число это 40. Делим число 40 на два числа это 4 и 0. 4 и 0 мы можем использовать по условию задачи по первому пункту,но ко второму пункту он не подходит,потому что записан в порядке убывания,а как мы уже поняли по условию,числа должны быть записаны в порядке не убывания(2 пункт задачи) 2) смотрим второе число 1030 ,делим его на два числа 10 и 30, это число нам не подходит,потому что в нём присутствует число 30,а число 30 нам нельзя использовать по условию задачи (1 пункт) 3) смотрим на 3 число 130,разделили его на два числа( мы его можем разделить двумя первый это 1 и 30,в этом случае он нам не подойдёт, второй и 0) в этом случае он нам подойдёт по первому пункту,но нужно проверит второй пункт число 13 и 0 записаны по убыванию,по второму пункту это число не подходит так как в условии говорится что числа должны быть записаны непоубыванию(а если не по убыванию ,то следовательно это или по возрастанию либо должны быть равны друг другу(например 1616,1515,1414 и тд.) И так надо брать каждое число и про гонять его по условию задания,и потом посчитать количество чисел которые подошли по условию это и будет ответ Если что-то не понятно уточню