Длинная арифметика: вычислить 7 в 125 степени - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

задача с большими значениями данных вычислить 7 в 125 степени

Решение задачи: «Длинная арифметика: вычислить 7 в 125 степени»

textual
Листинг программы
const base = 7;
      st = 125;
var s,tt : string;
    c : char;
    i,j,k,a,b,len : integer;
begin
s := '7';
for i:=1 to st-1 do
 begin
  tt := s;
  len := length(tt);
  s := '';
  k := 0;
  for j:=1 to len do
   begin
    a := (ord(tt[j])-48)*base + k;
    b := a mod 10;
    k := a div 10;
    s := s + chr(b+48);
   end;
  if k <> 0 then s := s + chr(k+48);
 end;
len := length(s);
for i:=1 to trunc(len/2) do
 begin
  c := s[len-i+1];
  s[len-i+1] := s[i];
  s[i] := c;
 end;
writeln(s);
end.

Объяснение кода листинга программы

В данном коде реализуется вычисление числа 7 в степени 125.

  1. В первой строке объявляются константы: base = 7 (основание степени) и st = 125 (степень).
  2. Затем создаются строки s и tt, а также переменные i, j, k, a, b и len типа integer. Значение переменной s инициализируется строкой '7'.
  3. Далее следует цикл for, который выполняется от 1 до st-1 (то есть вычисляет 125-1 = 124 раза).
  4. Внутри этого цикла формируется новая строка tt, длина которой равна длине исходной строки s.
  5. Затем в цикле for от 1 до len (длина строки tt) происходит вычисление значения числа a, которое представляет собой сумму двух частей: (ord(tt[j])-48)*base (преобразование символа в число и умножение на основание) и k (сумма циклов от 0 до 9, если длина строки tt больше 1).
  6. Далее из полученного числа a вычисляется число b, представляющее собой последнюю цифру числа a (модуль 10 от деления a на 10).
  7. Затем значение переменной k обновляется (полученное число a делится на 10 без остатка).
  8. В строку s добавляется символ, соответствующий числу b (вводится с клавиатуры при нажатии на кнопку «4», «5», «6», «7», «8», «9», «0»).
  9. После завершения внутреннего цикла значение переменной s обновляется (в начале цикла было вычислено значение k, которое добавляется в конец строки s).
  10. Если значение переменной k не равно 0, то цикл выполняется еще раз (значение переменной k добавляется в начало строки s).
  11. Длина строки s округляется до целого числа (trunc(len/2) — длина строки s сокращается вдвое).
  12. Затем происходит перестановка символов в строке s (значения переменных s[len-i+1] и s[i] меняются местами).
  13. В конце выводится значение переменной s.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы