=== Python 3.8.3 ===
def fastExp(b, n):
def even(n):
if n % 2 == 0:
return True
return False
if n == 0:
return 1
if even(n):
#Можно было написать return fastExp(b, b/2) ** 2, но операцию возведения в степень использовать нам запретили.
res = fastExp(b, n/2)
return res*res
return b*fastExp(b, n-1)
def main():
base = float(input())
exp = int(input())
print(fastExp(base, exp))
if __name__ == "__main__":
main()
Предложенные тесты проходит. Сам алгоритм быстрого возведения в степень реализован в виде функции fastExp(b, n)
/*Простейшая реализация. Подразумевается, что вводятся корректные данные, n вмещается в int, а a и результат - в double. Визуализация зависимости числа операций умножения от степени n для чисел от 0 до 5000 прилагается */
#include <iostream>
double s_pow(double a, int power)
{
if (power == 0)
{
return 1;
}
if (power % 2 == 0)
{
return s_pow(a * a, power / 2);
}
return a * s_pow(a, power - 1);
}
int main()
{
double a;
int n;
std::cin >> a >> n;
std::cout << s_pow(a, n);
return 0;
}
Поделитесь своими знаниями, ответьте на вопрос:
Ввести с клавиатуры число n – размер квадратной матрицы. последовательно по строкам ввести с клавиатуры все элементы матрицы. отсортировать элементы главной диагонали по возрастанию. вывести получивший двумерный массив на экран.
===== PascalABC.NET =====
begin
var n := ReadInteger('N =');
Writeln('Вводите элементы построчно');
var a := ReadMatrInteger(n, n);
Writeln;
a.Println(4);
Writeln;
var v := Range(0, n - 1).Select(i -> a[i, i]).Sorted.ToArray;
for var i := 0 to v.High do
a[i, i] := v[i];
a.Println(4)
end.