| 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
|
|
Гость |
Это просто для замены
Код int value = bonus + a[i] * n; if ( value >= 10 ) { bonus = (int)(value / 10); value %= 10; } На Код (value, bonus) = MulDiv(a[i], n); Не надо основание системы счисления менять на 10^500, это для 1000000000. А функция деления длинного на длинное тебе не нужна, ты ж не собрался, надеюсь, основание длинным делать. Число храни как массив cardinal (или u32 или uint32, или что там), каждый элемент от 0 до 999999999. Ну просто чтобы было проще выводить результат. Иначе бы можно было бы тупо взять в качестве основания 2^32 и не париться. Ещё такой момент - то, что результат возвращается на стеке, а не в регистрах, тоже не очень хорошо. Было бы хорошо, если было можно своё соглашение о вызове описать, но я хз, как в С++ с этим. |
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
TarasBer > Хотя тут придется реализовывать ф-ю деления б… 10.03.2011 15:19
klem4 Дык не получится так просто, в cardinal ты число и… 10.03.2011 22:13
klem4 Большое спасибо за подсказки, все получилось, испо… 15.03.2011 1:50![]() ![]() |
|
Текстовая версия | 6.11.2025 22:42 |