Среди приведённых ниже трёх чисел, записанных в различных системах счисления, найдите максимальное и запишите его в ответе в десятичной системе счисления. В ответе запишите только число, основание системы счисления указывать не нужно.
5A16, 278, 10001102
Const
s=5;
Var
ar:array[1..s] of integer;
n,m,i:integer;
begin
writeln('N');
readln(n);
writeln('M');
readln(m);
writeln('Array:');
for i:=1 to s do
readln(ar[i]);
writeln('First array:');
for i:=1 to s do
begin
write(ar[i]:4);
if ar[i] div n<>0 then ar[i]:=ar[i]+m;
end;
writeln;
writeln('Final array:');
for i:=1 to s do
write(ar[i]:4);
end.
Пример ввода:
3
3
1
2
3
4
5
Пример вывода:
First array:
1 2 3 4 5
Final array:
1 2 6 7 8
//Блок-схема во вложении
a = [1, 100, 10, 2]
a = sorted(a, reverse=True)
if (len(a) > 2):
if(a[0] != a[1] and a[1] != a[2]):
print(a[1])
else:
print(0)
else:
print(0)
Объяснение:
Итак, как я понял, абсолютный минимум и максимум это самый большой и самый маленький элемент в списке, значит нам нужно вывести второй по величине. Сортируем массив с sorted(значит мы сортируем массив и записываем результат в a, заменяя старый), причем сортируем с reverse=True так как по умолчанию он сортирует по возрастанию, а нам нужно по убыванию. Затем мы проверяем длинну списка и если в ней есть хотя бы 3 элемента(0, 1, 2 - абсолютный максимум, искомый элемент и абсолютный минимум), то выводим искомый элемент(второй элемент списка, индекс у него 1 так как счет с 0), иначе выводим 0
upd: вложенный if сравнивает первый и второй и второй и третий элементы. Если они равны, то тоже выводим ноль