Делается это очень просто (хотя довольно занудно и однообразно).
Обозначим через m количество единиц, а через n - количество двоек.
В цикле m и n изменяются следующим образом:
n=n-3
m=m+1
m=m-3
n=n+1
Итого: m=m-2; n=n-2. То есть и m и n уменьшаются на 2.
m и n - нечетные, n-m=100. Следовательно, через некое количество вычислений, последовательно уменьшаясь на 2, m примет значение 3, а n - значение 103.
n=n-3=103-3=100
m=m+1=3+1=4
m=m-3=4-3=1
n=n+1=100+1=101
Теперь цепочки их трех единиц нет. До тех пор, пока цепочка из трех единиц не образуется, операции m=m-3 и n=n+1 мы, по условию, не производим. Повторим несколько вычислений в цикле.
n=n-3=101-3=98
m=m+1=1+1=2
возвращаемся к началу цикла
n=n-3=98-3=95
m=m+1=2+1=3
m=m-3=3-3=0
n=n+1=95+1=96
возвращаемся к началу цикла
n=n-3=96-3=93
m=m+1=0+1=1
Значения m=1 и n=101 изменились на m=1 и n=93.
То есть m как было, так и осталось равным единице, а n уменьшилось на 8.
8*[101/8]=8*12=96
101-96=5
То есть, через некоторое количество вычислений, мы придем к следующим значениям: m=1 и n=5
Далее получаем:
n=n-3=5-3=2
m=m+1=1+1=2
Поскольку строка из трех двоек больше не находится, цикл завершается.
На выходе получаем строку из двух единиц и двух двоек.
Правило а) в конец числа (справа) дописывается 1, если число единиц в двоичной записи числа чётно, и 0, если число единиц в двоичной записи числа нечётно. Правило а) приведет к тому, что число единиц станет нечетным в любом случае.
Правило б) к этой записи справа дописывается остаток от деления количества единиц на 2. После правила а) число единиц нечетное, поэтому дописываться всегда будет единица. Это, в свою очередь, означает, что все число будет нечетным и в десятичной системе, а общее число единиц в двоичной записи будет четным.
Число R по условию превышает 31₁₀=11111₂ и должно быть нечетным.
Будем последовательно проверять все нечетные числа, начиная от 100001₂.
100001 может быть результатом работы алгоритма, т.е. число единиц в нем четное и оно завершается единицей.
В самом деле, если N₂=1000, то по правилу а) получаем 10000, а по правилу б) получаем 100001.
Итак, N₂=100001₂=2⁵+2⁰=32+1=33₁₀
ответ: 33
var arr:array[1..6] of integer;
i:integer;
begin
arr[1]:=2; arr[2]:=5; arr[3]:=9; arr[4]:=15; arr[5]:=0; arr[6]:=4;
for i:=1 to 6 do
if (arr[i] > 3) and (arr[i] < 10) then writeln(arr[i]);
readln;
end.
Объяснение: