Сейчас на уроке информатики обсуждали метод быстрого возведения в ступень. Антон
Сейчас на уроке информатики обговаривали алгоритм быстрого возведения в ступень. Антон был очень внимателен и запомнил, что метод нужен для того, чтоб уменьшить количество операций умножения при вычислении a^n. Заместо n1умножения, которые получаются если просто вычислить творенье aaaa (n сомножителей) можно получить еще меньшее число, если действовать так: o если n кратно 2, то найдем сначала a^(n/2), а позже умножим a^(n/2) на себя o если n не кратно 2, то найдем a^(n1), а позже умножим на a. Например, чтоб вычислить a10 хватит четырех умножений: 3. поначалу найдем a^2=aa, 4. позже a^4=a^2a^2, 5. потом a^5=aa^4, 6. и, в конце концов, a^10=a^5a^5. Антон также запомнил, что самые "нехорошие" случаи для этого метода когда n на 1 меньше точной ступени двойки. Теперь ему занимательно выяснить для какого-нибудь великого "отвратительного" n, а сколько умножений необходимо, чтобы возвести a в ступень n с поддержкою этого метода. Помогите Антону, обусловьте, сколько умножений сделает метод для вычисления 2n, где n= 2^121. Хоть какой язык
Задать свой вопросНикакой язык здесь не нужен. Задачка математическая.
Поначалу, давайте определим функции:
1) Для всех естественных n,
Явно, что эта функция одинакова количеству умножений, которые необходимо выполнить используя данный метод (для того чтоб вычислить ).
2) Для все естественных n,
.
Таким образом, нам требуется вычислить
Заметим, что
Т.к.
Используя математическую индукцию, легко доказать что для всех ngt;1,
Как следует,
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.
Разные вопросы.
Разные вопросы.