Дан массив, содержащий 2020 положительных целых чисел не превышающих 15 000. Необходимо найти минимальный элемент, двоичная запись которого заканчивается не более чем одним нулём, уменьшить все нечётные элементы массива, превышающие найденный минимум, на величину этого минимума и вывести измененный массив. Если в массиве нет элементов, двоичная запись которых заканчивается не более чем одним нулем, нужно вывести массив без изменений.
Например, для массива 12, 13, 18, 19, 20, 15 нужно получить и вывести массив, содержащий числа 12, 13, 18, 6, 20, 2.
Программа на Паскале! Помогите, пожалуйста
Answers & Comments
Вообщем потанцевав с бубном, вроде как пришел к логическому завершению программы. Но есть одни ньансы, первое если поставить массив меньше, программа начнет жестко троить. Возможно я, аля такой херовый цхакер, или просто руки не из плечей) Ну да ладно
Что это СиеПрограмка показывает
1. Исходный массив
2. Минимальный элемент и его двоичного собрата))
3. Преобразованный масив
==== PascalABC.NET =====
begin
var a := ArrRandom(2020, 1, 15000);
a[:100].Println; // первые 100 чисел
var m := a.Where(p -> p.IsOdd or p.IsEven and (p mod 4 <> 0)).Min;
a.Transform(p -> p.IsOdd and (p > m) ? p - m : p);
Writeln; // отступ
a[:100].Print; // первые 100 чисел
end.