По приведённому алгоритму восстановите формулу для вы
числения значения и и запишите её на алгоритмическом
языке:
1) умножить хна х, обозначить результат п;
2) умножить R., на а, обозначить результат R.;
3) сложить R., сь, обозначить результат Ra;
4) разделить к на с, считать результат значением у.
[0, 0, "a", 1]
[1, 1, "b", 2]
[1, 2, "bb", 3]
[2, 2, "b", 4]
[0, 3, "abba", 5]
[3, 3, "a", 6]
[3, 4, "aa", 7]
[4, 4, "a", 8]
[3, 5, "aaa", 9]
[4, 5, "aa", 10]
[5, 5, "a", 11]
[3, 6, "", 12]
[4, 6, "aaa", 13]
[5, 6, "aa", 14]
[6, 6, "a", 15]
[2, 7, "bb", 16]
[7, 7, "b", 17]
[6, 8, "aba", 18]
[8, 8, "a", 19]
[7, 9, "bab", 20]
[9, 9, "b", 21]
#код программы Ruby 22
s = "abbbab"
n = 0
for r in 0..s.size-1
for l in 0..r
t = s[l..r]
if t.reverse == t
n += 1
p [l,r,t,n]
end
end
end
Для нахождения нода используется алгоритм Эвклида
//PascalABC.Net
function NOD(A, B: integer): integer;
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
procedure pNOD(A, B: integer; var NOD: integer);
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
begin
var a: Array of integer := (16, 32, 40, 64, 80, 128);
var n := a[low(a)];
for var i := low(a) to high(a) do
pNOD(n, a[i], n);
Writeln(n);
end.