![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Kernigan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
Требуется написать функцию, на C++, возведения в степень y основания x, где x, y - тип класса, например, MyClass pow (MyClass & x, MyClass & y). Если кто-то уже сталкивался с подобной задачей, прошу откликнуться.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
реализуй умножение больших чисел (возьми исходник)
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kernigan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
В инете я нашёл несколько исходников, но ничего конкретного. Если у вас MAKCim есть ссылка что-то похожее, укажите пожалуйста.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
реализуй операции operator*=, --, > -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kernigan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
Благодарю MAKSim'а за предоставленный код
|
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
MAKCim,
А ускорить процесс возведения в степень можно как-то ? |
|||
|
||||
| V.A.KeRneL |
|
|||
![]() Vadim A. Kazantsev ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 3.12.2006 Где: Moscow, Russia Репутация: 7 Всего: 14 |
En_t_end, а можно я отвечу? Ну, пожалуйста! Из книжки Ксиены и Ревиллы: «* Возведение в степень. Возведение в степень — это повторяемое умножение, так что тут возникают те же проблемы с производительностью, что и при многократном сложении длинных чисел. Хитрость состоит в том, чтобы заметить, что
, так что можно обойтись, используя только логарифмическое число умножений.» -------------------- «C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы» ---/)/)---(\.../)---(\(\ --(':'=)---(=';'=)---(=':') (")(")..)-(").--.(")-(..(")(") |
|||
|
||||
| sergejzr |
|
||||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
V.A.KeRneL, добавлю немного кода с пояснением мелочей bas^pot=power(bas,pot)
Если pot постоянный для нескольких чисел, то можно один раз просто разбить его на биты и вместо pot%2 проверять, имеет бит значение 1, или 0.
Если необходимо работать по модулю какого-то числа (n), то в цикле надо просто это (%n) вписать после каждого умножения PS: Код к сожалению проверить не было возможности. Написан "на коленке" PPS: Вобще-то эти способы (для умножения, степени, проверки на простоту) разработал Лагранж Хотя быстрое умножение было известно ещё в древнем Египте. |
||||||
|
|||||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |