Берешь с конца мысленно расставляешь над цифрами очерёдность от нуля до десяти потом смотришь над какими единичками какая цифра после смотришь в таблицу квадратов двойки. циферка над единичкой соответствует степени цифры 2 переводишь степень в цифру (2 во 2 степени = 4) складываешь что получилось и вуаля от двоичной к десятичной. наоборот же проще смотришь какую максимальную степень вмещает число( 9 вмещает 2 в 3 степени) пишешь степень от основного отнимаешь её и так пока не напишешь набор степеней после смотришь в таблицу и пишешь 0 если нету 1 если есть такая степень в написанных тобою (нам так объясняли)
Не совсем требования к программе понятны. Написал на ПаскальАВС.Нет с использованием функции
var x,y,z:integer; function ex(x:integer):integer; begin if x>0 then result:=2*x else result:=x*x; end; begin write('Введите x, y, z: '); readln(x,y,z); x:=ex(x); y:=ex(y); z:=ex(z); writeln('Новые значения: ',x,'; ',y,'; ',z); end.
Вариант без использования функции var x,y,z:integer; begin write('Введите x, y, z: '); readln(x,y,z); if x>0 then x:=2*x else x:=x*x; if y>0 then y:=2*y else y:=y*y; if z>0 then z:=2*z else z:=z*z; writeln('Новые значения: ',x,'; ',y,'; ',z); end.
function IsPrime(Self: integer): boolean; extensionmethod;
// является ли число простым ?
begin
if Self < 4 then Result := True
else
begin
var found := (Self mod 2 = 0);
var p := 3;
while (not found) and (sqr(p) <= Self) do
begin
found := (Self mod p = 0);
p += 2
end;
Result := not found
end
end;
begin
var (m, n) := ReadInteger2('Введите m и n:');
Range(m, n).Where(t -> not t.IsPrime).Println
end.