![]() |
|
Модераторы: Poseidon |
![]()
|
|
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Вычислить точное значение выражения 2000! (две тысячи факториал).
Нужно вывести на экран точное значение, это где-то несколько тысяч знаков вроде бы. Как сделать не понимаю. Можно через char, реализовать пробовал, но не получается, так как я ещё пока нуб -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
ДобренькийПапаша,
сначала проверил в Виндозном калькуляторе:
Потом запустил программу со своим классом длинных чисел для вычисления факториала ответ по данным знакам сошелся (хотя их намного больше, и ненулевых), что дает возможность предполагать, что нашлось все правильно... правда, долго искало, минут 10 Но если поиск представления нужен для каких-то целей, где время не очень критично, то... Это сообщение отредактировал(а) Kuvaldis - 17.11.2006, 21:08 Присоединённый файл ( Кол-во скачиваний: 21 )
2000.zip 3,24 Kb-------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Если закомментировать вывод на каждом шаге очередного факториала, то время с 10 минут уменьшается до вполне приемлемых 18 секунд
-------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
полу-оффтопик: где-то (вроде Алголист) было описание такого подхода: умножение длинных сводится к свёртке свёртка - к перемножению Фурье-образов а суть в том, что вместо n^2 мы получаем n*log n правда, сам не пробовал -------------------- qqq |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 6 Всего: 173 |
maxim1000, да, это стандартная практика при умножении длинных целых. Можно также получить O(N ^ (log_2 3)) вместо O(N^2) за счёт т.н. “Gauss trick”:
В результате три умножения на каждом этапе вместо четырёх (сложение и умножение на 2^n имеют сложность O(n)) и T(n) = 3 * T(n/2) + O(n) Медленнее, чем FFT, но проще в реализации.
Интерпретатор Питона вычисляет 2000! менее чем за секунду -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Void,
Вот так вот сразу и серпом по ... горлу. А если серьезно, ты бы не мог хорошую (!) ссылочку дать по этой теме, где понятно написано для лица, "не обезображенного интеллектом"? (т.е. где не слишком сложно) Добавлено @ 22:42 Кстати, поздравляю тебя с двухлетием пребывания на форуме -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 6 Всего: 173 |
Kuvaldis, да тут уже на Алголист ссылались, вроде довольно понятно написано.
Я лично понял связь между преобразование Фурье и умножением длинных чисел из этой книги. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |