Теща Ипполита Матвеевича видела сны. Она видела их всегда. Ей снились девушки в
кушаках и без них, лошади, обшитые желтым драгунским кантом, дворники, играющие на
арфах, архангелы в сторожевых тулупах...
Но не все сны Клавдия Ивановна считала плохими. У нее было заветное слово. Если в
сне было меньше 4 общих букв с секретным словом, то такой сон не предвещает ничего
дурного.
Напишите программу, которая из введенной строки слов, разделенных запятой и
пробелом выведет только те, в которых меньше 4 общих букв с секретным словом.
Формат ввода
Вводится слово (секретное), затем с новой строки строка слов через запятую и пробел.
Формат вывода
Из введенной строки через символ @, окруженный пробелами, вывести те слова, у
которых меньше 4 общих букв с секретным словом. Одинаковые буквы считать за одну,
регистр не учитывать.
Пример 1
Пример 2
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Ввод Вывод
Claudius
Girls, horses, Dragoons, janitors, archangels
Girls @ horses @ Dragoons @ janitors
Ввод Вывод
Dragoon
sash, gold, mallet, knitting, distressing, precious
sash @ gold @ mallet @ knitting @ precious
program raf105;
const
n = 10; //Размер массива
var
a,b,c: array[1..n] of integer;
x,i,j,b2,c2,min,minpos: integer;
begin
write('Введите число: ');
readln(x);
writeln('Вводите числа по очереди');
for i:=1 to n do
begin
readln(a[i]);
if a[i] > x
then begin
c2:= c2+1;
c[c2]:= a[i];
end
else begin
b2:= b2+1;
b[b2]:= a[i];
end;
end;
for i:=1 to b2 do
begin
min:= b[i];
minpos:= i;
for j:=i to b2 do
if b[j] < min
then begin
min:= b[j];
minpos:= j;
end;
b[minpos]:= b[i];
b[i]:= min;
end;
for i:=1 to b2 do
a[i]:= b[i];
for i:=1 to c2 do
a[i+b2]:= c[i];
write('Вывод: ');
for i:=1 to n do
write(a[i],' ');
end.
PascalABC 3.4.2bignum = array[1..100] of integer;
var
a, b: bignum;
i, j, k, n_a, n_b: integer;
procedure get_num(var m: bignum; var n: integer);
var
i := 0;
s: string;
begin
write('Введите число = ');
readln(s);
s := trim(s);
n := 0;
for i := length(s) downto 1 do
if s[i] in ['0'..'9'] then begin
n := n + 1;
m[n] := strtoint(s[i]);
end;
end;
function more(a, b: bignum; n_a: integer): boolean;
var
i: integer;
f := false;
begin
for i := n_a downto 1 do
begin
if a[i] > b[i] then f := true
else if a[i] < b[i] then f := false;
if a[i] <> b[i] then break;
end;
more := f;
end;
procedure show(m: bignum; n: integer);
var
i: integer;
begin
write('Вывод ');
for i := n downto 1 do
write(m[i]);
writeln();
end;
begin
get_num(a, n_a);
get_num(b, n_b);
while (n_a >= n_b) and more(a, b, n_a) do
begin
if (a[n_a] > b[n_b]) then k := n_a - n_b
else if n_a > n_b then k := n_a - n_b - 1
else k := 0;
for i := 1 to n_b do
begin
a[i + k] := a[i + k] - b[i];
if a[i + k] < 0 then begin
for j := i + k to n_a - 1 do
begin
if a[j] >= 0 then break;
a[j] := a[j] + 10;
a[j + 1] := a[j + 1] - 1;
end
end;
end;
if a[n_a] = 0 then n_a := n_a - 1;
end;
show(a, n_a);
end.