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