Составить программу, вычисляющую это значение для любого значения n, если n<=30 - Free Pascal

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

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

Две цифры

Сколько

n-

значных чисел можно составить, используя цифры

5

и

9

, в которых три одинаковые цифры не стоят рядом? Для

n=3

ответ будет

6

. Составить программу, вычисляющую это значение для любого значения

n

, если

n<=30

Решение задачи: «Составить программу, вычисляющую это значение для любого значения n, если n<=30»

textual
Листинг программы
var
  i, j, n, res: longint;
  a: array[1..30, 1..4] of longint;
begin
  read(n);
  if n = 0 then writeln(0) else
    if n = 1 then writeln(2) else
      if n = 2 then writeln(4) else
      begin
        res := 0;
        for i:=1 to 30 do for j:=1 to 4 do a[i,j]:=0;
        a[2, 1] := 1; a[2, 2] := 1; a[2, 3] := 1; a[2, 4] := 1; {//55,99,59,95}
        for i := 2 to n - 1 do
        begin
          inc(a[i + 1, 3], a[i, 1]);
          inc(a[i + 1, 4], a[i, 2]);
          inc(a[i + 1, 2], a[i, 3]);
          inc(a[i + 1, 4], a[i, 3]);
          inc(a[i + 1, 1], a[i, 4]);
          inc(a[i + 1, 3], a[i, 4]);
        end;
        for i := 1 to 4 do inc(res, a[n, i]);
        writeln(res);
      end;
end.

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

  1. Объявлены переменные i, j, n, res, a, которые будут использоваться в программе.
  2. С помощью функции read() в переменную n считывается значение, которое будет использоваться в программе.
  3. Если n = 0, то выводится 0.
  4. Если n = 1, то выводится 2.
  5. Если n = 2, то выводится 4.
  6. Если n > 2, то выполняется следующий блок кода.
  7. Переменная res инициализируется значением 0.
  8. Массив a размером 30x4 заполняется нулями.
  9. Значения a[2,1], a[2,2], a[2,3], a[2,4] инициализируются единицами.
  10. Для i = 2 to n-1 выполняется следующий блок кода.
  11. Значения a[i+1,3], a[i,1] увеличиваются на единицу.
  12. Значения a[i+1,4], a[i,2] увеличиваются на единицу.
  13. Значения a[i+1,2], a[i,3] увеличиваются на единицу.
  14. Значения a[i+1,4], a[i,3] увеличиваются на единицу.
  15. Значения a[i+1,1], a[i,4] увеличиваются на единицу.
  16. Значения a[i+1,3], a[i,4] увеличиваются на единицу.
  17. После завершения цикла, значения a[i+1,3], a[i,1], a[i+1,4], a[i,2], a[i+1,2], a[i,3], a[i+1,4], a[i,3], a[i+1,1], a[i,4], a[i+1,3], a[i,4] увеличиваются на единицу.
  18. Значения a[1,i], a[2,i], a[3,i], a[4,i] для i = 1 to 4 добавляются к переменной res.
  19. Выводится значение переменной res.

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


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

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

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