Форум программистов, компьютерный форум 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; else (*str == '(' ) ? count++ : count--; cout << "Строка:" << *str << " count:" << count <<endl;
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) const final { return compareTo(other) < 0; } virtual bool operator> (const T other) const final { return compareTo(other) > 0; } virtual bool operator<=(const T other) const final { return... 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,) замена: %%%%% %%%%% Правила существенно обрезаны. Строка замены на краш не влияет. А вот с искомой какие-то чудеса творятся. если меняем строку ^(\)(\n)((.|\n)*?)(item=)(i_gold) - крашит. ^(\)(\n)((.|\n)*?)(item=)(i_) - шуршит. Если текст в котором ищем...
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: синтаксическая ошибка: тип 1>c:\users\андрей\documents\visual studio 2010\projects\sb\sb\data.c(16): error C2059: синтаксическая ошибка: тип static int min(int a, int b) {
C++ Очистка динамической памяти в структуре И снова здравствуйте. Столкнулся с проблемой. Есть задача - написать программу "Телефонный справочник" на основе класса Tree (бинарное дерево), реализовать там всякие функции, не суть важно какие. Класс Tree есть, описывать его не буду, вопрос не в нем. Есть структура, которая содержит данные абонента, и которая является узлом бинарного дерева: struct Subscriber { char * FIO; char *... подробнее

Показать сообщение отдельно
dogg12
 Аватар для dogg12
57 / 23 / 5
Регистрация: 21.02.2011
Сообщений: 503
15.07.2014, 23:15     Найти делители "длинного" числа
Я понял, но смотрите, у меня такая мысль: будем выполнять деление в столбик.
Переведем числа в двоичную систему.
Сдвигаем делитель влево до тех пор, пока старший бит не станет 1, запоминаем количество сдвигов.
Повторяем столько раз, сколько было сдвигов.
Если делитель (модифицированный) меньше делимого, то вычитаем его из делимого, очередной бит ответа — 1
иначе очередной бит ответа — 0.
Сдвигаем делитель вправо.
Если нет возможности перейти к двоичной арифметике, алгоритм усложнится, потому что на каждом шаге основного цикла надо будет не просто сравнивать делимое с делителем, а вычислять очередную цифру ответа. Для десятичных чисел сдвиг влево — это дополнение делителя справа нулем.
Я не спорю, есть и более скоростные алгоритмы, которые основаны на обработке не одного бита за раз, а сразу группы бит (2, 4, 8), но они сложнее.
 
Текущее время: 01:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru