// PascalABC.NET 3.3, сборка 1625 от 17.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var a:=ReadReal('Введите число a:'); var n:=ReadInteger('Введите показатель степени n:'); if n<=0 then begin 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 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
При записи на новый жесткий диск файлы записываются последовательно расположенными кусочками (кластерами). Спустя некоторое время – после копирования, переноса, удаления папок и файлов и т.п. – эти самые кусочки оказываются разбросанными по жесткому диску, образуя, так называемые, дырки. Сами файлы не повреждаются, просто их части записаны оказываются далеко друг от друга, в разных ячейках жесткого диска и в итоге, в процессе считывания файла головкой жесткого диска, ей приходится искать его фрагменты по всей поверхности, что замедляет работу. В качестве аналогии приведу пример: У Вас есть конструктор. Изначально он упакован в коробку, где каждая деталь лежит рядом с деталью такого же цвета, размера и формы. Допустим, что эти (одинаковые) детальки даже изначально скреплены между собой и представляют собой одно целое (файл). Но, через некоторое время, после того как Вы много много играли с конструктором, строили и тд и тп, детали в коробке разъединились и перемешались Вашими же усилиями, а посему, чтобы найти нужную Вам, потребуется теперь больше времени, чем это было изначально, когда они были все рядышком друг с другом. Это и есть фрагментация - разные части одного целого находятся теперь в разных частях коробки, среди неидентичного содержания (т.е других по форме, цвету и тп деталек). Дефрагментация же представляет собой процесс сбора разбросанных частей (фрагментов) снова воедино
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadReal('Введите число a:');
var n:=ReadInteger('Введите показатель степени n:');
if n<=0 then begin
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
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