Var i, j, k : integer; a : array [0..9,0..9] of char; procedure U(i,j:integer); var c : char; begin c:=a[i,j]; a[i,j]:=' '; if (c='W')and(a[i+1,j]='B') then U(i+1,j); if (c='B')and(a[i+1,j]='W') then U(i+1,j); if (c='W')and(a[i-1,j]='B') then U(i-1,j); if (c='B')and(a[i-1,j]='W') then U(i-1,j); if (c='W')and(a[i,j+1]='B') then U(i,j+1); if (c='B')and(a[i,j+1]='W') then U(i,j+1); if (c='W')and(a[i,j-1]='B') then U(i,j-1); if (c='B')and(a[i,j-1]='W') then U(i,j-1); end; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); for i:=1 to 8 do begin for j:=1 to 8 do read(a[i,j]); readln end; for i:=1 to 8 do begin a[0,i]:=' '; a[9,i]:=' '; a[i,0]:=' '; a[i,9]:=' ' end; k:=0; for i:=1 to 8 do for j:=1 to 8 do if a[i,j]<>' ' then begin k:=k+1; U(i,j) end; write(k); close(output) end.
Смотри, выписываешь все числа на бумагу. 1.Смотришь первый шаг: максимальная сумма 2-значных чисел это 18 (9+9), минимальная 1 (1+0), то есть больше 18 . 2-ой шаг - максимальное произведение это 27 (9*3), а минимальное 0 (0*3) или 3 (1*3). 3.Каждое число делишь (чертой) на 2 числа. (2 |1, 7|3, 9|4, 72|9, 12|9, 15|14, 27|18, 29|12 4.смотришь чтобы ни одно число не было больше 27, а если такое есть, то другое число должно быть меньше либо равно 18. 7|29 и 29|12 сразу зачеркиваем, так как они не подходят. Далее смотришь, числа по невозрастанию должны быть, так что 4.Дальше надо считать: 1-е число:2 и 1. Неподходит, так как ни одно число не подходит в диапазон умножения (оно не равно 3-м или нулю). Зачеркиваем. 2-е число 7 и 3. число 7 не делится нацело на 3, возможно, что оно произошло при сложения (4 и 3 например). 3 тоже подходит (3*1) Оставляем. 3-е число 9 и 4 Подходит (3*3 и 2+2) 4-е число 72 и 9 мы его зачеркнули 5-е число 12 и 9 Подходит (4*3 и 6+3) 6-е число 15 и 14 Подходит (5*3 и 7+7) 7-е число 27 и 18 Подходит прям впритык (9*3 и 9+9) 8-е число 29 и 12 Мы его зачеркнули ответ: 5 чисел.
Возможно, тебе мой метод непонятен, так что обратись к другим источникам, или налегай на другие задания. Удачи)))
i, j, k : integer;
a : array [0..9,0..9] of char;
procedure U(i,j:integer);
var c : char;
begin
c:=a[i,j]; a[i,j]:=' ';
if (c='W')and(a[i+1,j]='B') then U(i+1,j);
if (c='B')and(a[i+1,j]='W') then U(i+1,j);
if (c='W')and(a[i-1,j]='B') then U(i-1,j);
if (c='B')and(a[i-1,j]='W') then U(i-1,j);
if (c='W')and(a[i,j+1]='B') then U(i,j+1);
if (c='B')and(a[i,j+1]='W') then U(i,j+1);
if (c='W')and(a[i,j-1]='B') then U(i,j-1);
if (c='B')and(a[i,j-1]='W') then U(i,j-1);
end;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
for i:=1 to 8 do begin for j:=1 to 8 do
read(a[i,j]);
readln
end;
for i:=1 to 8 do
begin
a[0,i]:=' '; a[9,i]:=' '; a[i,0]:=' '; a[i,9]:=' '
end;
k:=0;
for i:=1 to 8 do
for j:=1 to 8 do
if a[i,j]<>' ' then
begin
k:=k+1; U(i,j)
end;
write(k);
close(output)
end.
1.Смотришь первый шаг: максимальная сумма 2-значных чисел это 18 (9+9), минимальная 1 (1+0), то есть больше 18 .
2-ой шаг - максимальное произведение это 27 (9*3), а минимальное 0 (0*3) или 3 (1*3).
3.Каждое число делишь (чертой) на 2 числа. (2 |1, 7|3, 9|4, 72|9, 12|9, 15|14, 27|18, 29|12
4.смотришь чтобы ни одно число не было больше 27, а если такое есть, то другое число должно быть меньше либо равно 18. 7|29 и 29|12 сразу зачеркиваем, так как они не подходят.
Далее смотришь, числа по невозрастанию должны быть, так что
4.Дальше надо считать:
1-е число:2 и 1. Неподходит, так как ни одно число не подходит в диапазон умножения (оно не равно 3-м или нулю). Зачеркиваем.
2-е число 7 и 3. число 7 не делится нацело на 3, возможно, что оно произошло при сложения (4 и 3 например). 3 тоже подходит (3*1)
Оставляем.
3-е число 9 и 4 Подходит (3*3 и 2+2)
4-е число 72 и 9 мы его зачеркнули
5-е число 12 и 9 Подходит (4*3 и 6+3)
6-е число 15 и 14 Подходит (5*3 и 7+7)
7-е число 27 и 18 Подходит прям впритык (9*3 и 9+9)
8-е число 29 и 12 Мы его зачеркнули
ответ: 5 чисел.
Возможно, тебе мой метод непонятен, так что обратись к другим источникам, или налегай на другие задания.
Удачи)))