В специальном вычислителе реализованы две функции, способные выполнять над целыми положительными числами Операции умножения УМН (A, B) и сдвига СДВ (А, n). Результатом сдвига является целое число, получающееся при сдвиге битов двоичного представления числа A влево (положительные n) или вправо (отрицательные n). При сдвиге влево справа дописываются нули. При сдвиге вправо выдвигаемые цифры отбрасываются. Воспользовавшись этим вычислителем, Вам необходимо разработать алгоритм для нахождения целой части от результата деления произвольного неотрицательного числа X, не превышающего 1000010, на число 21.
Для нахождения целой части от результата деления числа X на 21 можно воспользоваться следующим алгоритмом:
Инициализируем две переменные: dividend = X и shift = 0.Пока dividend больше или равен 21, выполняем следующие шаги: Выполняем сдвиг влево на dividend.Вычитаем 21 из dividend.Увеличиваем shift на 1.В итоге получаем значением shift - это и будет целая часть от результат деления числа X на 21.
Пример: Пусть X = 42. Инициализация: dividend = 42, shift = 0. Пока dividend >= 21:
dividend = СДВ(dividend, 1) = 84, dividend = dividend - 21 = 63, shift = 1.dividend = СДВ(dividend, 1) = 126, dividend = dividend - 21 = 105, shift = 2.dividend = СДВ(dividend, 1) = 210, dividend = dividend - 21 = 189, shift = 3.dividend = СДВ(dividend, 1) = 378, dividend = dividend - 21 = 357, shift = 4. Таким образом, целая часть от результат деления числа 42 на 21 равна 4.
Этот алгоритм позволит найти целую часть от результата деления произвольного неотрицательного числа X на 21.
Для нахождения целой части от результата деления числа X на 21 можно воспользоваться следующим алгоритмом:
Инициализируем две переменные: dividend = X и shift = 0.Пока dividend больше или равен 21, выполняем следующие шаги:Выполняем сдвиг влево на dividend.Вычитаем 21 из dividend.Увеличиваем shift на 1.В итоге получаем значением shift - это и будет целая часть от результат деления числа X на 21.
Пример:
dividend = СДВ(dividend, 1) = 84, dividend = dividend - 21 = 63, shift = 1.dividend = СДВ(dividend, 1) = 126, dividend = dividend - 21 = 105, shift = 2.dividend = СДВ(dividend, 1) = 210, dividend = dividend - 21 = 189, shift = 3.dividend = СДВ(dividend, 1) = 378, dividend = dividend - 21 = 357, shift = 4.Пусть X = 42.
Инициализация: dividend = 42, shift = 0.
Пока dividend >= 21:
Таким образом, целая часть от результат деления числа 42 на 21 равна 4.
Этот алгоритм позволит найти целую часть от результата деления произвольного неотрицательного числа X на 21.