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

Деление длинного числа на длинное - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ присвоить стрке двумерного масива значение http://www.cyberforum.ru/cpp-beginners/thread729915.html
у меня есть масив - mas; и вот кусок кода где надо присвоить второй строке масива значение 5.. вроде правильно написал не понимаю почему не работает.... for(i=1; i<2; i++) { for(j=0; j<5;...
C++ c++ перегрузка функций и еще пара просьб Доброй ночи! вот имеется код с классом объектом которого является комплексное число. класс нужно дополнить динамическим массивом, например, названием комплексного числа(такое уж дурацкое задание) и... http://www.cyberforum.ru/cpp-beginners/thread729913.html
Фиксированный квант времени в алгоритме планирования FCFS C++
Здравствуйте. Вот код программы, планировщика, который работает по алгоритму FCFS. В нем реализованы два состояния: готовность и выполнение. Как дополнить код, чтоб было состояние ОЖИДАНИЯ и...
Создать класс файл с методом top50 по расширению C++
Создать класс File. Добавить метод, который считает сколько файлов на определённом диске. Создать метод Competition. Он показывает файлов какого типа больше всего, а также их кол-во. Метод...
C++ Удалить среднею букву в нечетных словах текста http://www.cyberforum.ru/cpp-beginners/thread729905.html
Нужно удалить в каждом нечетном слове среднею букву, я смог дойти только до такого: удаляет онли в первом слове, дальше уж не знаю, как составить алгоритм, нужна Ваша помощь. #include <iostream>...
C++ Преобразуйте КА к детерминированному виду и минимизируйте полученный КА Помогите с решением задачки: Задан КА: M({S,R,Z}, {a,b}, δ, S, {Z}), δ(S,a) = {S.R}, δ(R,b) = {R}. δ(R,a) = {Z}. Преобразуйте его к детерминированному виду и минимизируйте полученный КА. ... подробнее

Показать сообщение отдельно
HrundelB
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 13
14.12.2012, 00:03  [ТС]
NEbO, спасибо! Это конечно интересное предложение, но мне, во-первых, хотелось бы все таки доделать ту реализацию, которую я уже на половину сделал, а во-вторых, на ассемблере писать не вариант) А делать сдвиги и вычитания, когда каждая цифра в отдельном элементе массива или вообще односвязного списка - не очень то удобно)

Я почему-то больше чем уверен, что должен быть какой-то способ обойти эту проблему с миллиардом вычитаний. Может быть все-таки есть какие-то алгоритмы деления отличные от столбика? Кроме двоичных.


taras atavin, большое основание (а точнее не просто большое, а являющееся "машинным словом", т.е. оперируем интами, которые аккурат влезают в разрядность процессора) позволяет очень быстро производить умножение, с помощью которого тысяча факториал (1000!) вычисляется за 0,23 сек, при том, что те же методы но с основанием 10 считают его 25 секунд. И это я еще молчу, что умножение - простой столбик, а факториал - обыкновенная и медленная рекурсия.

Так вот при условии, что нам нужно остаться в рамках десятичной системы счисления(чтобы число просто рубилось на отрезки при вводе, а не переводилось в какую-нибудь двоичную, троичную, семеричную и так далее системы тем же делением) основание миллиард дает минимальное количество потерь памяти - теряется лишь два бита из 32х на каждой цифре.

Добавлено через 7 часов 47 минут
NEbO, разобрался с двоичным делением и возник вопрос - и как же это можно масштабировать такое деление на 4 байта допустим? В оригинальном алгоритме считается, что цифра может быть только 0м или 1цей, что позволяет после одного вычитания сразу сказать - надо добавить единицу в частное или нет. Если масштабировать алгоритм на 4 байта, то каждая цифра (именно цифра, не число) будет принимать значение от 0 до 11111111111111111111111111111111 (32 бита). Теперь представь, что мы делим однозначное число 11111111111111111111111111111111 (ну грубо говоря максимально возможную цифру) на число 101. Сколько ж вычитаний сделать придется?)

Здесь та же самая беда, нет разницы, десятичная система счисления или двоичная. Если основание системы очень большое, то вычитаний будет много. В примере выше естессно предполагается, что это только старшие разряды, а за ними еще огромные хвосты цифр. Поэтому разделить инт на инт конечно не можем.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.