Я высажусь на Марсе
якя выкысакажукусь нака Макарсеке (после каждой гласной буква"к" и та гласная)
Скатиться, если правильно варианты ответов переписал :)
A B
1 6 3
2 =A1+B1 =A1/B1
1 6 3
2 3 2
1 2 3
2 5 0,666667
1 2 4
2 6 0,5
За основу взят алгоритм, изложенный в "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
<em>// PascalABC.NET 3.2, сборка 1509 от 27.07.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
function SumDig(n:integer):integer;
begin
Result:=0;
while n>0 do begin
Result+=n mod 10;
n:=n div 10
end
end;
begin
var a:=ReadSeqInteger('Вводите числа:',ReadInteger('n=')).ToArray;
Write('Палинодромы: ');
a.Select(x->x.ToString).Where(x->x=x.Inverse).Println;
var k:=ReadInteger('Введите простое число');
Write('Числа, сумма цифр которых больше введенного: ');
a.Where(x->SumDig(x)>k).Println
end.
<u>Пример</u>
n= 12
Вводите числа: 9437 2522 3534 1532 4664 6882 7629 5820 2530 9889 6526 6573
Палинодромы: 4664 9889
Введите простое число 19
Числа, сумма цифр которых больше введенного: 9437 4664 6882 7629 9889 6573