Быстрая степень

    Как уже было отмечено, проблема легко решается только в случае если показатель степени, сам есть степень двойки. Но если если это не так, то идею необходимо немного усовершенствовать. Мы будем строить общий алгоритм на следующих очевидных утверждениях:

1) Если в выражении a n=2m (то есть четно) то an =(a*a)и таким образом показатель степени уменьшается вдвое.

2) Если в выражении a n=2m+1 (то есть нечетно) то an =(an-1)*a таким образом показатель степени уменьшается на 1 и приводится к четному числу.

АЛГОРИТМ

Входные данные: ОСНОВАНИЕ, ПОКАЗАТЕЛЬ

Очередной показатель = ПОКАЗАТЕЛЬ

Результат = 1

Вычисленная степень = ОСНОВАНИЕ

Пока Очередной показатель не ноль делать

   Начало

     Если Очередной показатель есть четное число

        То Очередной показатель = Очередной показатель/2

              Вычисленная степень = Вычисленная степень * Вычисленная степень

        Иначе

              Очередной показатель = Очередной показатель -1

              Результат = Результат * Вычисленная степень

   Конец

Распечатать значение результата

 

 

Hosted by uCoz