| klem4 |
6.03.2011 10:14
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Всем привет. Может кто-то подсказать описание хорошего алгоритма умножения длиннных чисел ? Желательно с примерами работы алгоритма. Необходимо за время ~ 1c. перемножить несколько сотен длинных чисел (100-6000 знаков) на 3-4-х значные числа. Простой столбик в этом время не укладывается
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
| volvo |
8.03.2011 11:35
Сообщение
#2
|
|
Гость |
Кстати, Андрей, в твоем конкретном случае (при умножении на 1111), ты делаешь 4 раза одну и ту же работу, вот тут:
Цитата for (int i = b_size - 1; i >= 0; i-- ) Цитата И в процессоре есть готовая операция, которая сразу получает (a+b) mod 2^32 и (a+b) div 2^32. Как называется? |
klem4 Быстрое умножение длинных чисел. 6.03.2011 10:14
-TarasBer- Надо умножить длинное на короткое?
Алгоритм оптими... 6.03.2011 12:09
Lapp Думаю, кроме столбика все равно ничего нет. Друго... 6.03.2011 13:17
klem4 Буду рад любым подсказкам, числа храню в массиве (... 8.03.2011 10:03
Гость > for (int i = a_size - 1; i >= 0; i-- )
... 8.03.2011 11:21
-TarasBer- > Как называется?
Там опечатка, не +, а * надо... 8.03.2011 11:44
klem4 Спасибо за советы, volvo - хорошее замечание, вос... 9.03.2011 22:52
TarasBer > Хотя тут придется реализовывать ф-ю деления б... 10.03.2011 11:19
klem4 Дык не получится так просто, в cardinal ты число и... 10.03.2011 18:13
-TarasBer- Это просто для замены
int value = bonus + a... 10.03.2011 19:06
klem4 Большое спасибо за подсказки, все получилось, испо... 14.03.2011 21:50![]() ![]() |
|
Текстовая версия | 13.11.2025 13:21 |