На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится
6) если число N
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12 = 11002, результатом является число 11001002 = 100, а для исходного числа 4 = 1002 результатом является число 100112 = 19.
Укажите максимальное число R,
Приведём решение на языке Python.
maxi = 0
for n in range(4, 1000):
s = bin(n)[2:] # перевод в двоичную систему
if n % 3 == 0:
s += bin(n)[-3:]
else:
s += bin((n%3)*3)[2:]
r = int(s,2)
if r < 170 and r > maxi:
maxi = r
print(maxi)
Ответ: 166.
Приведём решение Сергея Донец на языке PascalABC.NET.
uses School;
begin
var maxR := 0;
for var n := 1 to 10000 do
begin
var b := bin(n);
var rem := n mod 3;
if rem = 0
then b += b?[^3:] // + три последние цифры
else b += bin(rem * 3); // + остаток * 3 → двоичная
var r := dec(b, 2);
if (r <= 170) and (r > maxR) then maxR := r;
end;
maxR.Print;
end.

