![]() |
|
![]() ![]() ![]() |
|
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
Привет! Надо подобрать и реализовать оптимальный алгоритм возведения в степень. Задача заключается в том, что у нас есть 2 числа в двоичном виде. Эти числа представлены как массив. Какие идеи будут?
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
есть такой способ:
не в каждом случае он будет оптимальным, где-то даже была темка с таким обсуждением, если память не изменяет но, у меня большие подозрения, что на то, чтобы определить, попались ли нам такие числа, что этот метод неоптимальный и какой алгоритм на самом деле оптимальный, потратится больше вычислительной мощности, чем на реализацию этого алгоритма ну а наличие чисел именно в двоичном представлении - ещё один довод в пользу этого метода: если повнимательнее его рассмотреть, то можно увидеть, что он просто обрабатывает по порядку биты числа x, т.е. вполне неплохо приспособлен для данной ситуации... -------------------- qqq |
|||
|
||||
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
как я понял a - это i - тый элемент?
|
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Нет, a и x - это сами числа (которое возводится в степень и сама степень).
А i-ый бит, подразумевается, берётся здесь: x%2==0. |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
По-видимому, бинарное возведение в степень является оптимальным, но при условии, что разрешены операции умножения на 2 и прибавления 1.
Потому что, если, например, разрешено отнимать единичку, то, очевидно, это будет не так (например, 31 быстрее получить из 32). Вот для этого случая уже намного менее тривиально определить оптимально, какие действия в какой последовательности выполнять. Задача с Петрозаводских сборов-2006 ![]() А уж если допустимы вообще любые умножения и сложения - тогда вообще страшно представить, какой же там будет алгоритм нахождения ![]() Это сообщение отредактировал(а) maxdiver - 31.5.2008, 21:31 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |