Возведение в степень - Free Pascal
Формулировка задачи:
Здравствуйте. Помогите решить задачу, пожалуйста.
По заданным вещественному значению
x
и целому неотрицательному значениюn
вычислитеxn
(операция возведения в степень в языке Pascal отсутствует). Для решения задачи используйте алгоритм эффективного возведения в степень. Алгоритм основан на тождествеx2n = xnxn
. Тогда, еслиn = 2k
, то значениеxn
можно получить изx
, домножая результат сам на себяk
раз (таким образом, мы будем последовательно получать значения 2-ой, 4-ой, 8-ой, и т.д.2k
-ой степеней числаx
). В свою очередь, произвольноеn
можно представить как сумму степеней двойки (фактически перевести в двоичную систему счисления):n = 2k1 + 2k2
+ … Соответственноxn = x2n -x2n -...
Фактически алгоритм быстрого возведения в степень сводится к последовательному получению 2-ой, 4-ой, 8-ой, и т.д. степеней числаx
и перемножению необходимых степеней. На вход программе подаются вещественноеx
, по модулю не превосходящее 10 и целое неотрицательноеn
, не превосходящее 100. Выведите значениеxn
с точностью до трех цифр после десятичной точки. Для вычислений используйте тип extended.Примеры входных данных
2 10 0.5 3Примеры выходных данных
1024.000 0.125Решение задачи: «Возведение в степень»
textual
Листинг программы
var x,rez:extended; n:integer; begin readln(x,n); rez:=1; for i:=1 to n do begin rez:=rez*x; end; writeln(rez:0:3); readln; end.
Объяснение кода листинга программы
- Объявление переменных:
- x типа extended (предположительно число с плавающей точкой);
- rez типа extended (предположительно число с плавающей точкой);
- n типа integer (предположительно целое число).
- Ввод значений переменных x и n с помощью функции readln.
- Инициализация переменной rez значением 1.
- Цикл от 1 до n, в котором значение переменной rez умножается на значение переменной x.
- Вывод значения переменной rez с помощью функции writeln, при этом значение приводится к типу extended с указанием количества знаков после запятой (3 знака после запятой).
- Ввод символа конца программы с помощью функции readln. Примечание: код написан без учета возможных ошибок ввода и отсутствия проверки на деление на ноль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д