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

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

Помогите разобраться, почему не работает программа!! Задача: 2^300
var m: array[1..100] of integer;
  i,j,t,n,r, a: integer;
  begin
  m[1]:=1; n:=1; r:=0;
  for i:=1 to 300 do
  begin
  for j:=1 to n do
  begin
     n:=m[j]*2;
     m[j]:= n mod 10+r;
     r:=a div 10;
  end;
    if r>=0 then begin
                      inc(n);
                      m[n]:=r;
                      r:=0;
                      end;
  end;
  for t:= n downto 1 do
  begin
  writeln(m[t]);
  end;
  end.

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

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.

12   голосов, оценка 4.167 из 5


СОХРАНИТЬ ССЫЛКУ