A:array[1..30000] of integer;
n, i, k, z:integer;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
if (a[i]<a[i+1]) then k:=k+1;
for i:=1 to n do
if (a[i]>a[i+1]) then z:=z+1;
if (k=n) or (z=n) then
for i:=1 to n do
if a[i]>0 then a[i]:=1;
for i:=1 to n do
writeln(a[i]);
readln;
end.
Каждый раз делишь на два и записываешь остаток, потом записываешь наоборот.
123/2 - остаток 1
61/2 - остаток 1
30/2 - остаток 0
15/2 - остаток 1
7/2 - остаток 1
3/2- остаток 1
под конец всегда нужно добавлять единицу
123 = 1111011
67/2 - остаток 1
33/2 - остаток 1
16/2 - остаток 0
8/2 - остаток 0
4/2 - остаток 0
2/2 - остаток 0
и под конец всегда нужно добавлять единицу
67=1000011
Под каждое словесное описание можно подобрать информационную модель.