movlam11
?>

Составьте программу на Паскаль, которая, введенное с клавиатуры число, возведёт в куб, если оно положительное, если отрицательное найдет его модуль, а если оно будет равно 0, то прибавить к нему 10.

Информатика

Ответы

kiparistop

program N1;

var

a:integer;

begin

readln(a);

If (a>0) then writeln(a+1)          

          else writeln(a

Объяснение:

olgakozelskaa492

Переведём число 130 в двоичную систему счисления:

13010=100000102

Число N должно быть на два разряда меньше, то есть уберем из двоичной записи числа 130 два левых разряда:

100000

Теперь попробуем применить к нему алгоритм. Сначала складываются три левых разряда, и остаток от деления на 2 этой суммы запишем в конец числа справа:

1000001

Теперь сложим правые четыре разряда, и остаток от деления этой суммы тоже запишем слева:

10000011

Как мы видим, при числе 1000002 мы получили число 100000112, что на единицу больше, чем число 130. При этом 1000002 = 3210, то есть минимальное возможное N не только для R, которое больше 130, но и по условию задания.

ответ: 32

fil-vasilij90
1. Установим допустимые сочетания двух последних битов (битов четности).
Если в N было четное количество единиц, то дописывается ноль. Поскольку ноль не меняет количества единиц, второй бит четности тоже будет нулевым. Правило №1: Если в двоичном представлении четное количество единиц, то дописывается 00.
Если в N было нечетное количество единиц, то дописывается единица. Это меняет количество единиц на четное, поэтому второй бит четности будет нулевым. Правило №2: Если в двоичном представлении нечетное количество единиц, то дописывается 10.

Первое число R, большее 180, это 181. Переведем его в двоичную систему счисления.
181₁₀ = 10110101₂
Мы видим, что оба наших правила нарушены, т.е. число 181 не подходит в качестве R.
Представление N (101101) содержит четное количество единиц, а для четного количества действует Правило №1 и мы должны записать 00, что уменьшит наше минимально возможное число R=181₁₀
Но если мы в числе N поменяем местами два правых бита, получим число 101110, которое больше чем 101101 и теперь по все тому же Правилу №1 мы получаем право приписать два нолика и получить R=10111000₂ = 184₁₀

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Составьте программу на Паскаль, которая, введенное с клавиатуры число, возведёт в куб, если оно положительное, если отрицательное найдет его модуль, а если оно будет равно 0, то прибавить к нему 10.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Nonstop788848
multikbo3049
Azat859
druzjkinaas22
shef3009
Alyona1692
infooem
Федоровна-Васильева
Astrians
jaksonj326
Romanovna-yana
damir
Mashkov-Daniil1764
Рузиев_Давиденко
evolkova-73