Procedure sovp; var i, j, r, c: byte; ar: array[1..10, 1..10]of byte; s: array[1..4] of string; b: boolean; label l1; begin r := random(2, 3); l1: c := 1; b := false; for i := 1 to 10 do for j := 1 to 10 do begin ar[i, j] := random(0, 1); if(i < 5) then s[i] := ''; end; for i := 1 to 9 do begin for j := 1 to 10 do begin if(ar[i, j] <> ar[i + 1, j]) then b := true; end; if(b = false) then begin s[c] := i + ' строка совпалает с ' + (i + 1) + ' строкой'; c := c + 1; end; b := false; end; if(c <> r) then goto l1 else begin for var k := 1 to c do if(k<>c)then writeln(s[k]); for i := 1 to 10 do begin for j := 1 to 10 do write(ar[i, j], ' '); writeln; end; end; end; begin sovp; end.
Основная идея состоит в том, что каждая сумма – это сумма цифр, то есть она не может быть больше 18. Значит, надо разбивать каждое возможно получившееся число на однозначные и двузначные числа и смотреть, может ли такое быть.
1212 – возможно, например, из числа 666 (6+6 = 12, 6+6 = 12, итог: 1212)
129 – возможно, например, из числа 936 (9+3 = 12, 3+6 = 9, итог: 129)
123 – возможно, например, из числа 930
1218 – невозможно. Это число можно разбить только на два двузначных числа, но тогда 12 и 18 записаны в порядке возрастания, а по условию должно быть наоборот
1812 – возможно, например, из числа 993
312 – невозможно. Это число можно разбить либо на 3 и 12, либо на 31 и 2. В первом случае числа расположены в порядке возрастания, а во втором нельзя получить 31, так как сумма цифр не больше 18
var
i, j, r, c: byte;
ar: array[1..10, 1..10]of byte;
s: array[1..4] of string;
b: boolean;
label l1;
begin
r := random(2, 3);
l1:
c := 1;
b := false;
for i := 1 to 10 do
for j := 1 to 10 do
begin
ar[i, j] := random(0, 1);
if(i < 5) then s[i] := '';
end;
for i := 1 to 9 do
begin
for j := 1 to 10 do
begin
if(ar[i, j] <> ar[i + 1, j]) then b := true;
end;
if(b = false) then
begin
s[c] := i + ' строка совпалает с ' + (i + 1) + ' строкой';
c := c + 1;
end;
b := false;
end;
if(c <> r) then goto l1
else
begin
for var k := 1 to c do if(k<>c)then writeln(s[k]);
for i := 1 to 10 do
begin
for j := 1 to 10 do write(ar[i, j], ' ');
writeln;
end;
end;
end;
begin
sovp;
end.
Основная идея состоит в том, что каждая сумма – это сумма цифр, то есть она не может быть больше 18. Значит, надо разбивать каждое возможно получившееся число на однозначные и двузначные числа и смотреть, может ли такое быть.
1212 – возможно, например, из числа 666 (6+6 = 12, 6+6 = 12, итог: 1212)
129 – возможно, например, из числа 936 (9+3 = 12, 3+6 = 9, итог: 129)
123 – возможно, например, из числа 930
1218 – невозможно. Это число можно разбить только на два двузначных числа, но тогда 12 и 18 записаны в порядке возрастания, а по условию должно быть наоборот
1812 – возможно, например, из числа 993
312 – невозможно. Это число можно разбить либо на 3 и 12, либо на 31 и 2. В первом случае числа расположены в порядке возрастания, а во втором нельзя получить 31, так как сумма цифр не больше 18
912 – невозможно (аналогично с 312)
112 – возможно, например, из 920
Итого 5 чисел могут получиться.
ответ: 5