В специальном вычислителе реализованы две функции, способные выполнять над целыми положительными числами Операции умножения УМН (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.