ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Общий форум

Please see my program!!It runs in my home well.Why it always gets 'Crash(ACCESS_VIOLATION)'(Problem 1108)
Послано Lin 27 окт 2001 17:44
Const Max=27000;

Var A,C         : Array[1..Max] of Byte;
    N           : Integer;
    i,j,k       : Integer;
    Last        : Integer;
    First       : Integer;
    L           : Integer;
    P           : Longint;
    P1          : Integer;

Begin
  Readln(N);
  If N>18 then Exit;
  A[1] := 1;
  For i := 1 to N-1 do
    Begin

      Fillchar(C,Sizeof(C),0);
      For L := Max downto 1 do
        If A[L]<>0 then Break;

      C := A;

      For j := 1 to L*2-1 do
        Begin
          Last := (j+1) Div 2;
          If (j+1) Mod 2=0 then
            Begin
              Inc(P,A[(j+1) div 2]*A[(j+1) Div 2]);
              Dec(Last);
            End;
          If j<=L then First := 1
                  else First := j-L;
          For k := First to Last do
            Inc(P,A[k]*A[j+1-k]*2);
          Inc(P,C[j]); C[j] := P Mod 10;
          P := P Div 10;
        End;
      P1 := L*2-1;
      While P<>0 do
        Begin
          Inc(P1);
          P := C[P1]+P;
          C[P1] := P Mod 10;
          P := P Div 10;
        End;

      P := 1; P1 := 1;
      Repeat
        P := P+A[P1];
        A[P1] := P Mod 10;
        P := P Div 10;
      Until P=0;

      For j := Max downto 1 do
        If A[j]<>0 then Break;
      For k := j downto 1 do
        Write(A[k]);
      Writeln;
      A := C;
    End;
      P := 1; P1 := 1;
      Repeat
        P := P+A[P1];
        A[P1] := P Mod 10;
        P := P Div 10;
      Until P=0;

  For L := Max downto 1 do
    If A[L]<>0 then Break;
  Writeln(L);
  For j := L downto 1 do
    Write(A[j]);
End.
Re: Please see my program!!It runs in my home well.Why it always gets 'Crash(ACCESS_VIOLATION)'(Problem 1108)
Послано Li, Yi 28 окт 2001 05:56
Change Max into 270000
> Const Max=27000;
>
> Var A,C         : Array[1..Max] of Byte;
>     N           : Integer;
>     i,j,k       : Integer;
>     Last        : Integer;
>     First       : Integer;
>     L           : Integer;
>     P           : Longint;
>     P1          : Integer;
>
> Begin
>   Readln(N);
>   If N>18 then Exit;
>   A[1] := 1;
>   For i := 1 to N-1 do
>     Begin
>
>       Fillchar(C,Sizeof(C),0);
>       For L := Max downto 1 do
>         If A[L]<>0 then Break;
>
>       C := A;
>
>       For j := 1 to L*2-1 do
>         Begin
>           Last := (j+1) Div 2;
>           If (j+1) Mod 2=0 then
>             Begin
>               Inc(P,A[(j+1) div 2]*A[(j+1) Div 2]);
>               Dec(Last);
>             End;
>           If j<=L then First := 1
>                   else First := j-L;
>           For k := First to Last do
>             Inc(P,A[k]*A[j+1-k]*2);
>           Inc(P,C[j]); C[j] := P Mod 10;
>           P := P Div 10;
>         End;
>       P1 := L*2-1;
>       While P<>0 do
>         Begin
>           Inc(P1);
>           P := C[P1]+P;
>           C[P1] := P Mod 10;
>           P := P Div 10;
>         End;
>
>       P := 1; P1 := 1;
>       Repeat
>         P := P+A[P1];
>         A[P1] := P Mod 10;
>         P := P Div 10;
>       Until P=0;
>
>       For j := Max downto 1 do
>         If A[j]<>0 then Break;
>       For k := j downto 1 do
>         Write(A[k]);
>       Writeln;
>       A := C;
>     End;
>       P := 1; P1 := 1;
>       Repeat
>         P := P+A[P1];
>         A[P1] := P Mod 10;
>         P := P Div 10;
>       Until P=0;
>
>   For L := Max downto 1 do
>     If A[L]<>0 then Break;
>   Writeln(L);
>   For j := L downto 1 do
>     Write(A[j]);
> End.
>