За основу взят алгоритм, изложенный в "Bикипедии" и найденный по запросу "Наибольшая общая подстрока".
Процедура переделана из C# реализации алгоритма, приведенного там же.
<em>// PascalABC.NET 3.2, сборка 1325 от 19.10.2016</em>
function MaxSubstr(s1,s2:string):string;
begin
var a:=new integer[s1.Length+1,s2.Length+1];
var u:=0; var v:=0;
for var i:=0 to s1.Length-1 do
for var j:=0 to s2.Length-1 do
if s1[i+1]=s2[j+1] then begin
a[i+1,j+1]:=a[i,j]+1;
if a[i+1,j+1]>a[u,v] then begin u:=i+1; v:=j+1 end
end;
Result:=s1.Substring(u-a[u,v],a[u,v])
end;
begin
var a:='trapperkaperkatrter';
var b:='appekaperspamer';
Writeln(MaxSubstr(a,b))
end.
Тестовое решение
kaper
Begin
m:=1;
k:=1;
read(n);
i:=1;
while i<>n do begin
k:=k+i;
m:=m*i;
i:=i+1;
end;
write(k,' ',m);
end.
Переменные, думаю, сами опишете)
Var N, lastNum, mod5: integer;
flag: boolean;
begin
readln(N);
lastNum := N mod 10;
mod5 := N mod 5;
flag := (lastNum = 5) or (lastNum = 0);
if flag then
writeln('Число ', N, ' делится на 5 по признаку делимости')
else
writeln('Число ', N, ' не делится на 5 по признаку делимости');
if (mod5 = 0) then
writeln('Число ', N, ' делится на 5 по определению')
else
writeln('Число ', N, ' не делится на 5 по определению');
flag := flag xor (mod5 = 0);
if flag then
writeln('Результаты не совпадают, это не признак делимости!')
else
writeln('Результаты совпадают, это возможно признак делимости')
end.
Бант-кант-карт-корт-кора-коса
миг-мис-бис-бес-вес-век
Код Бодо кодирует каждый символ в 5 бит (32 символа) или в 6 бит (64 символа) . То есть на любой символ приходится одинаковое количество информации. А в коде Морзе такого нет.