Вычислить 2^300 (найти ошибки в программе) - Pascal ABC

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

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

Помогите разобраться, почему не работает программа!! Задача: 2^300

Решение задачи: «Вычислить 2^300 (найти ошибки в программе)»

textual
Листинг программы
const st=300;  {степень}
var s,tt : string;
    c : char;
    i,j,k,a,b,len:integer;
begin
s:='2'; {начальная строка}
for i:=1 to st-1 do{от 1 до 299}
 begin
  tt:=s;{запоминаем строку}
  len:=length(tt);{длина запомненной строки 1,2,3..}
  s:='';{сбрасываем строку}
  k:=0;
  for j:=1 to len do
   begin
    a:=(ord(tt[j])-48)*2+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 len div 2 do
 begin
  c:=s[len-i+1];
  s[len-i+1]:=s[i];
  s[i]:=c;
 end;
writeln(s);
end.

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

  1. Переменная st устанавливается равной 300, что является степенью числа 2.
  2. Объявляются переменные s, tt, c, i, j, k, a, b, len. Переменная s устанавливается равной строке 2, а остальные переменные инициализируются пустыми значениями.
  3. Запускается цикл for, который выполняется 299 раз, начиная с 1 и до st-1. На каждой итерации цикла переменная s сбрасывается в пустую строку, а переменная tt запоминает текущую строку. Длина запомненной строки сохраняется в переменной len.
  4. В каждой итерации цикла for внутри вложенного цикла for переменная a вычисляется как произведение текущего символа строки tt на 2, умноженное на текущую позицию k, и добавляется к переменной k. Последняя цифра вычисляется как остаток от деления a на 10, и сохраняется в переменной b. Затем k обновляется как целая часть от деления a на 10. Новая строка формируется путем добавления символа b+48 к переменной s. Если k не равно нулю, то к концу строки добавляется еще один перенос.
  5. После завершения вложенного цикла for переменная len обновляется как длина строки s.
  6. Запускается еще один цикл for, который переворачивает строку s. На каждой итерации цикла переменная c считывается из строки s, а s[i] обновляется как c.
  7. Цикл for завершается, и результат вычисления 2^300 выводится на экран.

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


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

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

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