Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Найти делители "длинного" числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разобрать логику работы приведенного кода http://www.cyberforum.ru/cpp-beginners/thread1227515.html
Здравствуйте, уважаемые! #include <iostream> using namespace std; long brackets_balance (char * str) { long count; for (;*str;*str++){ if ( (*str != '(') && (*str != ')') ) continue; ...
C++ Определение чистой виртуальной функции класса-шаблона Есть класс Comparable<T>: template<typename T> class Comparable : virtual public Object { public: virtual int compareTo(const T other) const = 0; virtual bool operator< (const T other)... http://www.cyberforum.ru/cpp-beginners/thread1227436.html
C++ Вывод параметров или переменных из функции
Здравствуйте. В Паскале можно вернуть несколько параметров. procedure(int i,j; var real hik, tik; var string tin, gak;); begin { hik,tik,tin,gak переменные вернутся} end; Но как...
Regex_replace краши C++
собственно есть набор строк поиска/замены. Не могу понять почему спотыкается на: искомая строка: ^(\)(\n)((.|\n)*?)(item=)(i_gold,) замена: %%%%% %%%%% Правила существенно обрезаны. Строка...
C++ Error C2059: Синтаксическая ошибка: тип http://www.cyberforum.ru/cpp-beginners/thread1227406.html
Вот отрывок кода, указывает, что ошибка на 5ой и 16ой строке, то есть функция min и max. ошибка: 1>c:\users\андрей\documents\visual studio 2010\projects\sb\sb\data.c(5): error C2059:...
C++ Очистка динамической памяти в структуре И снова здравствуйте. Столкнулся с проблемой. Есть задача - написать программу "Телефонный справочник" на основе класса Tree (бинарное дерево), реализовать там всякие функции, не суть важно какие.... подробнее

Показать сообщение отдельно
dogg12
63 / 29 / 6
Регистрация: 21.02.2011
Сообщений: 831
15.07.2014, 23:15
Я понял, но смотрите, у меня такая мысль: будем выполнять деление в столбик.
Переведем числа в двоичную систему.
Сдвигаем делитель влево до тех пор, пока старший бит не станет 1, запоминаем количество сдвигов.
Повторяем столько раз, сколько было сдвигов.
Если делитель (модифицированный) меньше делимого, то вычитаем его из делимого, очередной бит ответа — 1
иначе очередной бит ответа — 0.
Сдвигаем делитель вправо.
Если нет возможности перейти к двоичной арифметике, алгоритм усложнится, потому что на каждом шаге основного цикла надо будет не просто сравнивать делимое с делителем, а вычислять очередную цифру ответа. Для десятичных чисел сдвиг влево — это дополнение делителя справа нулем.
Я не спорю, есть и более скоростные алгоритмы, которые основаны на обработке не одного бита за раз, а сразу группы бит (2, 4, 8), но они сложнее.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru