Написать программу возведения числа a в степень n.С циклом repeat или while.Даю 65 баллов

0 голосов
70 просмотров

Написать программу возведения числа a в степень n.С циклом repeat или while.Даю 65 баллов


Информатика (48 баллов) | 70 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1625 от 17.01.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ReadReal('Введите число a:');
  var n:=ReadInteger('Введите показатель степени n:');
  if n<=0 then begin<br>    Writeln('Показатель степени должен быть натуральным числом');
    Exit
    end;
  // перевод показателя степени в двоичную систему счисления
  var t:=n;
  var r:string:='';
  while t>=2 do (r,t):=(t mod 2+r,t shr 1);
  r:=t+r;
  // возведение в степень
  var (rr,i):=(a,2);
  while i<=r.Length do begin<br>    rr:=Sqr(rr);
    if r[i]='1' then rr*=a;
    i+=1
    end;
  Writeln(a,'^',n,' = ',rr)  
end.

Примеры
Введите число a: 3.182
Введите показатель степени n: 11
3.182^11 = 338611.675261463

Введите число a: 2
Введите показатель степени n: 10
2^10 = 1024
(150k баллов)