| klem4 |
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Всем привет. Может кто-то подсказать описание хорошего алгоритма умножения длиннных чисел ? Желательно с примерами работы алгоритма. Необходимо за время ~ 1c. перемножить несколько сотен длинных чисел (100-6000 знаков) на 3-4-х значные числа. Простой столбик в этом время не укладывается
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
| TarasBer |
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> Хотя тут придется реализовывать ф-ю деления большого на большое
Надо только функцию, которая говорит частное и остаток деления a*b на 1000000000 Функция из 3 строчек на асме. Для Д7 это выглядит так:
(Можно и через int64 написать, но это тормозить будет). Ещё можно её модифицировать, чтобы она сразу для a*b+c говорила, только не забудь про случай переноса при сложении. Сообщение отредактировано: TarasBer - -------------------- |
klem4 Быстрое умножение длинных чисел. 6.03.2011 14:14
-TarasBer- Надо умножить длинное на короткое?
Алгоритм оптими… 6.03.2011 16:09
Lapp Думаю, кроме столбика все равно ничего нет. Друго… 6.03.2011 17:17
klem4 Буду рад любым подсказкам, числа храню в массиве (… 8.03.2011 14:03
Гость > for (int i = a_size - 1; i >= 0; i-- )
… 8.03.2011 15:21
volvo Кстати, Андрей, в твоем конкретном случае (при умн… 8.03.2011 15:35
-TarasBer- > Как называется?
Там опечатка, не +, а * надо… 8.03.2011 15:44
klem4 Спасибо за советы, volvo - хорошее замечание, вос… 10.03.2011 2:52
klem4 Дык не получится так просто, в cardinal ты число и… 10.03.2011 22:13
-TarasBer- Это просто для замены
int value = bonus + a… 10.03.2011 23:06
klem4 Большое спасибо за подсказки, все получилось, испо… 15.03.2011 1:50![]() ![]() |
|
Текстовая версия | 5.11.2025 0:41 |