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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
#1

Кнут - деление длинных чисел - C++

01.05.2012, 16:03. Просмотров 1467. Ответов 0
Метки нет (Все метки)

Нужна помощь в переводе алгоритма деления длинных чисел из книги:
Д. Э. Кнут - Искусство Программирование Том 2 Получисленные Алгоритмы.
Особенно интересен третий шаг, я никак не могу понять, что там имеется в виду.

Мой код 4го шага:
C++
1
2
3
4
5
6
7
int q((static_cast<int>(num[j+n])*255+static_cast<int>(num[j+n-1]))/v[n-1]);
int r((static_cast<int>(num[j+n])*255+static_cast<int>(num[j+n-1]))%v[n-1]);
while(q!=255 || (q*static_cast<int>(v[n-2])<=255*r+static_cast<int>(num[j+n-2])))
    {
        q--;
        r+=static_cast<int>(v[n-1]);
    }
num соответствует переменной u из книги, v - v, n и m те же.
Числа предствлены в виде std::vector<unsigned char>, младший разряд соответствует нулевому элементу.

Добавлено через 6 часов 3 минуты
Вопрос все еще актуален.

Добавлено через 16 часов 53 минуты
Проблема решена:
C++
1
2
3
4
5
6
7
8
9
10
int q((static_cast<int>(u[j+n])*255+static_cast<int>(u[j+n-1]))/v[n-1]);
    int r((static_cast<int>(u[j+n])*255+static_cast<int>(u[j+n-1]))%v[n-1]);
 
    if(q==ds_int || (q*static_cast<int>(v[n-2])>ds_int*r+static_cast<int>(u[j+n-2])))
    {
        q--;
        r+=static_cast<int>(v[n-1]);
        if(q*static_cast<int>(v[n-2])>ds_int*r+static_cast<int>(u[j+n-2]) && r<ds_int)
            q--;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 16:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кнут - деление длинных чисел (C++):

Деление длинных чисел - C++
Код который делит очень длинное число на обычное число. Если вводить 121 и 2 выводит неправильный ответ. Какие условия надо поставить...

Деление длинных чисел столбиком - C++
Привет. У меня возникла проблема при написании курсовой. Необходимо реализовать деление двух больших чисел(записанных &quot;зеркально&quot;). Хотя я...

Деление длинных чисел нацело - C++
Возникла проблема. Завтра сдавать курсовик (арифметика длинных чисел), а у меня не готово деление, так как не знаю, как сделать. Курсовик...

Умножение/деление длинных целых чисел из строк - C++
у кого есть код 'умножение и деление целых чисел из строк'? заранее спасибо Добавлено через 32 минуты или библиотека и функции

Сделать сложение, вычитание, умножение и деление длинных чисел - C++
В общем, задача такая, что надо сделать сложение, вычитание, умножение и деление длинных чисел. Сумму сделал, с вычитанием какая-то засада....

Сложение/деление двух длинных чисел (длиной 1024 бита) - C++
Всем привет! Есть две вот такие задачи: 1. используя вставку кода в программу на С++, составить программу для сложения 2-х длинных...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 16:03
Привет! Вот еще темы с ответами:

Быстрое деление 2х длинных - C++
Предположим у меня есть вектор a и вектор b. Каждый элемент вектора содержит 9 цифр (основание миллиард). Дак вот вопросец, как поделить a...

Вычислить сумму двух длинных бинарных чисел, используя сложение чисел в двоичной системе счисления - C++
Задано положительное и отрицательное число в двоичной системе.Составить программу вычисления суммы этих чисел, используя сложения чисел в...

Сравнение длинных чисел >, < - C++
Доброго времени суток всем. помогите пожалуйста прояснить алгоритм сравнения относительно длинных чисел (например 2 в 512 степени) ,...

Умножение длинных чисел - C++
Доброго времени суток дорогие брограммисты. Сейчас занимаюсь с длинной арифметикой по книге, автор которой к сожалению предоставил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru