Задача о четырех тетрадах со сдвигом влево через перенос.

Возникла задача. Не прошу решить е за меня, но хотя бы помочь, как к ней подступиться.
Не могу нащупать алгоритма решения. : (
Дано 4 двоичных числа А=1110, B=1101, C=1110, D=1110. Следуя ниже определенному правилу привести
их к виду A=1110, B=1101, C=1011, D=0111.
Правило преобразования: за один ход можно сдвинуть влево с переносом пятого бита в первый
одновременно только три числа из четырех, число C изменяется всегда, одно из A, B, D не изменяется. Никакие другие операции недопустимы. Сдвигать можно только три числа сразу. Что то похоже на двоичное умножение с геометрической прогрессией вариантов. Даже элементарный алгоритм тупого перебора вариантов не могу придумать.
I) Количество итераций - произвольное. II) Количество итераций - минимальное.
P. S. В комментариях к сложности задачи написано, что она элементарная и не вызывает у большинства затруднений. :" ( Вот и хотелось бы спросить мнение большинства.
8 года назад от Вован ННННН

2 Ответы

0 голосов
проблема где то на этапе формулировки возникает абсолютно не понятно что требуеться.
я так понимаю в слове 4 тетрады
при сдвиге на один бит влево слово как бы умножиться на 2 а флаговый регистр утсановиться значением старшего бита
и этот бит нужно вдвинуть в другой регистр и так 16 раз пока в регистора не станут одинаковыми
но вот это "можно сдвигать только 3 числа " убивает. И еше "сдвиг 5го бита с первый"
Преобразования никакого нет A=A B=B C=C D=D
И самое интересное во всем этом что у нас регистор кратен байту а тертада всегда пол байта.
Тогда если мы не можем иметь 4 числа а одно размером в слово и это слово для 16разрядных машин 16бит как раз 4 тетрады. Если бы у нас была число- малдшая тетрада в регистре то никак бы мые не сдвинули.
Мне какжеться задача если бы е не мудаки составляли звучала бы так копировать слово из одного регистра в другой через сдвиг. Ну и делалось бы в цикле за 16 итераций.
ЗЫ 5-й бит в первый нельзя запихать из 16 разрядного регистора нет такой команды.
8 года назад от Света Кирюшина
0 голосов
Суммарное число сдвигов, которым подверглись числа A, В и D после любой итерации четно, так как в каждой итерации участвуют 2 из них. Но для преобразования чисел A и B требуется четное (и даже кратное 4) число сдвигов, а для преобразования D - нечетное. Следовательно, привести к требуемому виду невозможно даже эти 3 числа. Ищите опечатку .
8 года назад от егор силенок

Связанные вопросы