Задача С++
Книжная полка и динамические списки
Денис раскладывает свои книги на полку. Если на полке нет ни одной книги, то он ставит её, если есть, то ставит либо справа, либо слева от уже расставленных книг. Забирает книги он так же, то есть снимает только с правого или левого края. По заданной информации требуется смоделировать действия Дениса и вывести номера книг, которые он будет снимать.
Внимание! При решении задачи нельзя
использовать:
классы библиотеки STL
массивы
Формат входных данных
Входные данные содержат информацию об операциях, которые выполнил Денис, и заканчиваются символом EOF. Информация о каждой операции содержится в отдельной строке.
Каждая операция постановки книги на полку описывается парой чисел. Первое из них (1 или 2) показывает, книга ставится с левого края или с правого, соответственно. Второе целое число (от 0 до 109) обозначает номер книги. Номера книг могут повторяться.
Операции снятия книги с полки описывается одним числом. Число 3 означает, что книга снимается с левого края, 4 - с правого. Гарантируется, что для каждой операции снятия книги на полке будет хотя бы одна книга.
Формат результата
Для каждой операции снятия книги с полки вывести номер снимаемой книги.
Примеры
Входные данные
1 1
2 2
1 3
2 7
2 9
3
4
3
3
4
Результат работы
3
9
1
2
7
Вам нужно только написать ввод и вывод, формула уже написана.
Код (Python 3):
x, y, z = map(int, input().split())
u=(max(x,y,z) - min(x,y,z))/(max(x,y,z)+min(x,y,z))
print(u)
Пример ввода 1:
1 1 1
Пример вывода 1:
0.0
Пример ввода 2:
3 2 1
Пример вывода 2:
0.5
Второе задание:Находим максимальное число, и если текущее число не оно, на него можно умножать. Можно использовать список, так решение будет короче, я использую три переменные x, y, z.
Код (Python 3):
x, y, z = map(int, input().split())
max_xyz = max(x, y, z)
product = 1
if x != max_xyz:
product *= x
if y != max_xyz:
product *= y
if z != max_xyz:
product *= z
print(product)
Пример ввода 1:
1 2 3
Пример вывода 1:
2
Пример ввода 2:
3 2 1
Пример вывода 2:
2
begin
var quantity := 0;
var amount := 0;
var A := readinteger();
var B := readinteger();
for var i := A to B do
begin
if (i mod 3 = 0) and (i mod 10 <> 0) then
begin
inc(amount, i);
inc(quantity);
end;
end;
writeln(amount / quantity:0:2);
end.
Объяснение:
begin // Начало программы
var quantity := 0; // Объявление переменной, хранящей количество элементов, подходящих под условие
var amount := 0; // Объявление переменной, хранящей сумму элементов, подходящих под условие
var A := readinteger(); // Считывание числа А с клавиатуры
var B := readinteger(); // Считывание числа В с клавиатуры
for var i := A to B do // Идём от А до В
begin // Начало цикла
if (i mod 3 = 0) and (i mod 10 <> 0) then // Если значение переменной i делится на 3 без остатка И значение переменной i не заканчивается на 0
begin // Начало условного оператора
inc(amount, i); // Прибавляем к переменной amount значение переменной i
inc(quantity); // Прибавляем к переменной quantity единицу
end; // Конец условного оператора
end; // Конец цикла
writeln(amount / quantity:0:2); // Вывод среднего арифметического с точностью до 2 знаков после запятой
end. // Конец программы