|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Evgenij Masherov 2:5020/175.2 31 May 2001 20:58:32 To : Serge Kanilo Subject : Re: Вопрос -------------------------------------------------------------------------------- Thu May 31 2001 20:00, Serge Kanilo wrote to All: >> Подскажите, как можно сделать на Pascale, чтобы 10 значное число возвести >> в 10 значную степень (9999999999^9999999999), срочно нужно. Заранее >> благодарен. SK> Реализовать умножение и сложение длинных чисел наверное не проблема. SK> Сделать операцию возведения в целую степень из сумм и квадратов SK> тоже не проблема. SK> Hастоящая проблема - как представить результат (да и промежуточные SK> данные хранить тоже надо). SK> Если по символу на десятичную цифру - то 10 знаков*10^10 = около 93Гб. SK> Если придумаешь как это сделать, то можно тогда думать и о первых SK> двух шагах. SK> Да и время решения тоже наверно надо прикинуть до начала счета, SK> скорее всего несколько лет понадобится. SK> ЗЫ: Возможно преподавателя удовлетворит расчет только нескольких SK> тысяч или миллионов знаков нижней части числа. Я бы начал с вопроса: зачем? Если речь идет о получении точного значения со всеми знаками - то это совершенно нереально. Объем памяти полностью исключает возможность хранения в ОП, учитывая много промежуточных данных. А внешняя память - бОООльшой тормоз. Иная задача - возведение по модулю (т.е. после каждого умножения берется остаток от деления на большое число). Этот подход лежит в основе некоторых алгоритмов шифрования (для шифрования возводим в одну степень, для обратной дешифровки - в другую). Тогда надо смотреть Кнута, т.2 для начала, а потом искать более современные методы умножения. Hавскидку - возводить в степень 10^10 умножениями не стоит, на это есть бинарный метод, сокращающий число операций "большого умножения" до менее чем сотни. Да и само умножение делается не в столбик (опять же к Кнуту, или к Ахо, Хопкрофту и Ульману) Hаконец, если надо получить физическую величину (т.е. с разумным количеством десятичных знаков) - логарифмируем и выдаем ответ в виде мантиссы и экспоненты. С уважением Евгений Машеров АКА СанитарЖеня --- ifmail v.2.15 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/3300c59e0e0f.html, оценка из 5, голосов 10
|