// PascalABC.NET 3.1, сборка 1200 от 13.03.2016 begin var a:=MatrixRandom(7,7,0,9); var k:=0; for var i:=0 to 6 do begin for var j:=0 to 6 do begin Write(a[i,j]:3); if a[i,j] in [1..5] then Inc(k) end; Writeln end; Writeln('Кол-во элементов на [1,5]: ',k) end.
const n=7; var a:array[1..n,1..n] of integer; i,j,k:integer; begin Randomize; k:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(10); Write(a[i,j]:3); if a[i,j] in [1..5] then Inc(k) end; Writeln end; Writeln('Кол-во элементов на [1,5]: ',k) end.
Б) Пусть aК(n) - количество строк длины n, которые оканчиваются на К, и aA(n) - количество строк длины n, которые оканчиваются на А. Очевидно, aK(1) = aA(1) = 1.
Посчитаем, чему равны aK(n + 1) и aA(n + 1).
К можно дописать к любой строке, которая кончается на А. Поэтому aK(n + 1) = aA(n)A можно приписать вообще к любой строке. Значит, aA(n + 1) = aA(n) + aK(n)
Общее количество строк длины n > 2 равно a(n) = aK(n) + aA(n) = aA(n - 1) + a(n - 1) = a(n - 1) + a(n - 2).
Вычисляем значения a(n):
a(1) = 2
a(2) = 3 (АА, АК, КА)
a(3) = 2 + 3 = 5
a(4) = 3 + 5 = 8
a(5) = 5 + 8 = 13
a(6) = 8 + 13 = 21
a(7) = 13 + 21 = 34
a(8) = 21 + 34 = 55
a(9) = 34 + 55 = 89
В последовательности можно увидеть известную последовательность Фибоначчи.
В) Аналогично, введем aA(n), aК(n), aKK(n) - количество строк, оканчивающихся на А, ровно одно К и ровно два К. Общее количество строк будем так же обозначать как a(n).
aA(n + 1) = a(n)
aK(n + 2) = aA(n + 1) = a(n)
aKK(n + 3) = aK(n + 2) = a(n)
Итого, при n > 3 выполнено a(n) = a(n - 1) + a(n - 2) + a(n - 3).
a(1) = 2
a(2) = 4
a(3) = 7 (всего строк длины три 8, не подходит ККК).
a(4) = 2 + 4 + 7 = 13
a(5) = 4 + 7 + 13 = 24
a(6) = 7 + 13 + 24 = 44
a(7) = 13 + 24 + 44 = 81
a(8) = 24 + 44 + 81 = 149
a(9) = 44 + 81 + 149 = 274
a(10) = 81 + 149 + 274 = 504
Если в случае возникла последовательность Фибоначчи, то тут так называемая последовательность Трибоначчи - каждый новый член равен сумме трёх предыдущих
begin
var a:=MatrixRandom(7,7,0,9);
var k:=0;
for var i:=0 to 6 do begin
for var j:=0 to 6 do begin
Write(a[i,j]:3);
if a[i,j] in [1..5] then Inc(k)
end;
Writeln
end;
Writeln('Кол-во элементов на [1,5]: ',k)
end.
Тестовое решение:
2 1 7 3 3 2 7
9 2 9 2 0 5 5
4 2 6 9 4 6 0
1 0 3 5 4 5 9
6 3 6 0 2 0 8
0 8 4 3 2 1 8
6 0 4 4 5 4 0
Кол-во элементов на [1,5]: 27
Вариант "совсем для школы"
const
n=7;
var
a:array[1..n,1..n] of integer;
i,j,k:integer;
begin
Randomize;
k:=0;
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=Random(10);
Write(a[i,j]:3);
if a[i,j] in [1..5] then Inc(k)
end;
Writeln
end;
Writeln('Кол-во элементов на [1,5]: ',k)
end.
89, 504
Объяснение:
Б) Пусть aК(n) - количество строк длины n, которые оканчиваются на К, и aA(n) - количество строк длины n, которые оканчиваются на А. Очевидно, aK(1) = aA(1) = 1.
Посчитаем, чему равны aK(n + 1) и aA(n + 1).
К можно дописать к любой строке, которая кончается на А. Поэтому aK(n + 1) = aA(n)A можно приписать вообще к любой строке. Значит, aA(n + 1) = aA(n) + aK(n)Общее количество строк длины n > 2 равно a(n) = aK(n) + aA(n) = aA(n - 1) + a(n - 1) = a(n - 1) + a(n - 2).
Вычисляем значения a(n):
a(1) = 2
a(2) = 3 (АА, АК, КА)
a(3) = 2 + 3 = 5
a(4) = 3 + 5 = 8
a(5) = 5 + 8 = 13
a(6) = 8 + 13 = 21
a(7) = 13 + 21 = 34
a(8) = 21 + 34 = 55
a(9) = 34 + 55 = 89
В последовательности можно увидеть известную последовательность Фибоначчи.
В) Аналогично, введем aA(n), aК(n), aKK(n) - количество строк, оканчивающихся на А, ровно одно К и ровно два К. Общее количество строк будем так же обозначать как a(n).
aA(n + 1) = a(n)
aK(n + 2) = aA(n + 1) = a(n)
aKK(n + 3) = aK(n + 2) = a(n)
Итого, при n > 3 выполнено a(n) = a(n - 1) + a(n - 2) + a(n - 3).
a(1) = 2
a(2) = 4
a(3) = 7 (всего строк длины три 8, не подходит ККК).
a(4) = 2 + 4 + 7 = 13
a(5) = 4 + 7 + 13 = 24
a(6) = 7 + 13 + 24 = 44
a(7) = 13 + 24 + 44 = 81
a(8) = 24 + 44 + 81 = 149
a(9) = 44 + 81 + 149 = 274
a(10) = 81 + 149 + 274 = 504
Если в случае возникла последовательность Фибоначчи, то тут так называемая последовательность Трибоначчи - каждый новый член равен сумме трёх предыдущих