Условие задачи
В школе «Будущее» любят интеллектуальные командные соревнования. В них всегда включён конкурс капитанов. Нередки случаи, когда результат этого конкурса становится решающим при определении победителей соревнования. Оценив важность подготовки капитанов, совет самоуправления учеников решил издать методичку с примерами. Вот одно из типичных заданий.
Надо быстро преобразовывать числа по следующему алгоритму:
1. Десятичное число переводится в двоичную систему счисления.
2. У полученного числа удаляется старший разряд числа.
3. Высчитывается разница этих двух чисел.
4. К разнице справа дописывается бит чётности: 1, если сумма цифр двоичного числа нечётная, иначе 0.
5. Полученное число переводится обратно в десятичную систему счисления.
Сколько разных чисел можно получить при преобразовании всех натуральных чисел в промежутке [20; 100]?
Ответ
Для первого числа (20)10 = (10100)2 получаем:
(10100)2 - (0100)2 = (10100)2 - (0100)2 = (10000)2.
В исходном числе две единицы, поэтому значение дописываемого бита чётности равно 0. Получаем:
(100000)2 = (32)10.
Для второго числа (21)10 = (10101)2 получаем:
(10101)2 - (0101)2 = (10100)2 - (0100)2 = (10000)2.
В исходном числе три единицы, поэтому значение дописываемого бита чётности равно 1. Получаем:
(100001)2 = (33)10.
Обобщаем полученные результаты.
После выполнен...