Примечание:
Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).
ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).
Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).
Пример работы:
// Внимание! Если программа не работает, обновите версию!
begin
var a:array[1..9] of real;
randomize;
for var i:=1 to 9 do begin
case i mod 3 of
1:a[i]:=i*i;
2:a[i]:=random(1,50);
else a[i]:=(a[i-2]+a[i-1])/2
end;
Write(a[i],' ')
end;
Writeln
end.
Пример
1 44 22.5 16 16 10 49 39 23