// PascalABC.NET 3.1, сборка 1179 от 29.02.2016 begin var a:=SeqRandom(5,10,99).Sorted.ToArray; Writeln('a=',a); var b:=SeqRandom(5,10,99).Sorted.ToArray; Writeln('b=',b); var c:=new integer[10]; var i:=0; var j:=0; var k:=0; while (i<5) and (j<5) do begin if a[i]<b[j] then begin c[k]:=a[i]; Inc(i) end else begin c[k]:=b[j]; Inc(j) end; Inc(k) end; if i=5 then for var m:=j to 4 do begin c[k]:=b[m]; Inc(k) end else for var m:=i to 4 do begin c[k]:=a[m]; Inc(k) end; Writeln('c=',c) end.
Для решения подобных заданий, нужно перевести данные цифры в маске и узле в двоичную с.с. и сделать поразрядную коньюнкцию(логическое умножение). 255(10) равно 111 111 11(2) значит, любое число при умножении на это, даст себя же, т.к. при умножении 1 на 0 будет 0, значит первые 2 цифры остануться теми же 224.23, а вот 240 и 251 нужно перевести в двоичнцю с.с. и посчитать. 240(10) это 11 110 000(2), а 251(10) равно 11 111 011, вместе они дадут 11 110 000(2), переводим это число в 10 с.с. это будет 240. При умножении на 0 будет 0,поэтому в конце 0 остаеться. В итоге у нас получилось:224.23.240.0 ответ:DFBH
begin
var a:=SeqRandom(5,10,99).Sorted.ToArray; Writeln('a=',a);
var b:=SeqRandom(5,10,99).Sorted.ToArray; Writeln('b=',b);
var c:=new integer[10];
var i:=0; var j:=0; var k:=0;
while (i<5) and (j<5) do begin
if a[i]<b[j] then begin c[k]:=a[i]; Inc(i) end
else begin c[k]:=b[j]; Inc(j) end;
Inc(k)
end;
if i=5 then
for var m:=j to 4 do begin c[k]:=b[m]; Inc(k) end
else
for var m:=i to 4 do begin c[k]:=a[m]; Inc(k) end;
Writeln('c=',c)
end.
Тестовое решение:
a=[14,53,78,86,89]
b=[35,57,63,85,94]
c=[14,35,53,57,63,78,85,86,89,94]