zadach194.PAS

{* Задача 194 *}

Unit ZADACH194;
Interface
Implementation
Begin
 writeln('Вычислить количество пятниц, приходящихся на 13-е числа ХХ столетия');
End.

Program p4;

Uses zadach194.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключаем внешние файлы *}
Var {* В работе нам потребуются переменные: *}
  Vis   : Array[1..366] Of byte;
  Nevis : Array[1..365] Of byte;
  i     : integer;
  j     : integer;
  c     : integer;
  count : integer;
  r     : integer;
  d     : integer;
  tmp   : integer;
Begin
  clrscr; {* Очищаем экран *}
  c := 0;
  For j := 1 To 31 Do {* Цикл для j => [1 .. 31] *}
    Vis[c + j] := j;
  c := c + 31;
  For j := 1 To 29 Do {* Переменная j увеличивается с 1 до 29 *}
    Vis[c + j] := j;
  c := c + 29;
  For j := 1 To 31 Do {* Цикл для j => [1 .. 31] *}
    Vis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Увеличиваем j от 1 до 30 с шагом 1 *}
    Vis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    Vis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Цикл для j => [1 .. 30] *}
    Vis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Увеличиваем j от 1 до 31 с шагом 1 *}
    Vis[c + j] := j;
  c := c + 31;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    Vis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Переменная j увеличивается с 1 до 30 *}
    Vis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    Vis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Цикл для j => [1 .. 30] *}
    Vis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Цикл для j => [1 .. 31] *}
    Vis[c + j] := j;
  c := 0;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    neVis[c + j] := j;
  c := c + 31;
  For j := 1 To 28 Do {* Переменная j увеличивается с 1 до 28 *}
    neVis[c + j] := j;
  c := c + 28;
  For j := 1 To 31 Do {* Увеличиваем j от 1 до 31 с шагом 1 *}
    neVis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Переменная j увеличивается с 1 до 30 *}
    neVis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    neVis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Цикл для j => [1 .. 30] *}
    neVis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Цикл для j => [1 .. 31] *}
    neVis[c + j] := j;
  c := c + 31;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    neVis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Цикл для j => [1 .. 30] *}
    neVis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Цикл для j => [1 .. 31] *}
    neVis[c + j] := j;
  c := c + 31;
  For j := 1 To 30 Do {* Увеличиваем j от 1 до 30 с шагом 1 *}
    neVis[c + j] := j;
  c := c + 30;
  For j := 1 To 31 Do {* Переменная j увеличивается с 1 до 31 *}
    neVis[c + j] := j;
  d := 2;
  tmp := 1;
  For i := 2000 Downto 1901 Do
  Begin
    r := 366 - d;
    If tmp Mod 4 = 1 Then
      While (r > 7) Do
      Begin
        If (Vis[r] = 13) Then
          inc(count); {* Прибавим к count единицу *}
        r := r - 7;
      End;
    Else While (r > 7) Do
    Begin
      If (neVis[r] = 13) Then
        inc(count); {* Увеличиваем count на 1 *}
      r := r - 7;
    End;
    d := r;
    tmp := tmp + 1;
  End;
  writeln('koli4estvo 13 pt = ', count);
  readln; {* Ждем нажатия Enter *}
End.