program znanijacom;
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: integer;
max: integer;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:3);
max := a[1];
for i:=1 to n do if a[i] > max then max := a[i];
writeln(' максимальный элемент: ', max);
writeln('массив после изменений: ');
for i:=1 to n do begin
if a[i] = max then a[i] := a[i]*i;
write(a[i]:3);
end;
end.
Объяснение:
1. Первая правая цифра числа показывает число единиц, вторая - число двоек (1·2) , третья - число четверок (2·2), четвертая - число восьмерок (4·2) и т.д. Имеем:
111101₂ = 1·1 + 2·0 + 4·1 + 8·1 + 16·1 + 32·1 = 1+4+8+16+32 = 61₁₀
2. Число нужно поделить на два, найти остаток. Полученный результат снова поделить на два и найти остаток и т.д. Остатки, записанные в обратном порядке и есть запись в двоичном исчислении.
65÷2 = 32 (ост.1)
32÷2 = 16 (ост.0)
16÷2 = 8 (ост.0)
8÷2 = 4 (ост.0)
4÷2 = 2 (ост.0)
2÷2 = 1 (ост.0)
1÷2 = 0 (ост.1)
65₁₀ = 1000001₂