-29413=|-29413|=29413 Делим изначальное число на 2 и по остаткам получаем 111001011100101 Т.к. изначальное число отрицательное *-29413*, поставим в начале нашего выше получившемуся числу единицу, которую больше не трогаем. (Если изначальное число со знаком +, то в начале пишется 0) 1)Прямой код Получается 1111001011100101 2)Обратный код Изменяем все числа (Кроме самой левой единицы) Получается 1000110100011010 3)Дополнительный код К Обратному коду прибавляем единицу Получается 1000110100011011
Нужное тебе число 1000110100011011 Ну вроде бы так :)
1) 7 - изза начального присвоение m 2) 994. 4 соответствует условию, остальные числа лишь максимизируют число 3)
var N, d, m: longint;
begin readln(N); {m := N mod 10; ошибочная строка} m:=-1; {N mod 10 - может не удовлетворять условию, 0 - может и удовлетворять условию } while N > 0 do begin d := N mod 10; if d < 5 then if d > m then m := d; N := N div 10; end; {if m = 0 then ошибочная строка} if m = -1 then {если в цикле m так не разу и не поменялась} writeln('NO') else writeln(m); end.
Делим изначальное число на 2 и по остаткам получаем 111001011100101
Т.к. изначальное число отрицательное *-29413*, поставим в начале нашего выше получившемуся числу единицу, которую больше не трогаем. (Если изначальное число со знаком +, то в начале пишется 0)
1)Прямой код
Получается 1111001011100101
2)Обратный код
Изменяем все числа (Кроме самой левой единицы)
Получается 1000110100011010
3)Дополнительный код
К Обратному коду прибавляем единицу
Получается 1000110100011011
Нужное тебе число 1000110100011011
Ну вроде бы так :)
2) 994. 4 соответствует условию, остальные числа лишь максимизируют число
3)
var
N, d, m: longint;
begin
readln(N);
{m := N mod 10; ошибочная строка}
m:=-1; {N mod 10 - может не удовлетворять условию, 0 - может и удовлетворять условию }
while N > 0 do
begin
d := N mod 10;
if d < 5 then
if d > m then m := d;
N := N div 10;
end;
{if m = 0 then ошибочная строка}
if m = -1 then {если в цикле m так не разу и не поменялась}
writeln('NO')
else writeln(m);
end.