Автор | Сообщение |
|
Отправлено: 19.04.22 11:41. Заголовок: № 3910
Добрый день. Можно ли № 3910 решить без программирования? Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N. 2) Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже. 3) Шаг 2 повторяется ещё два раза. 4) Результат переводится в десятичную систему счисления. При каком наибольшем исходном числе N < 100 в результате работы алгоритма получится число, которое делится на 4 и не делится на 8?
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 3489
|
|
Отправлено: 19.04.22 15:27. Заголовок: inform_lesson пишет:..
inform_lesson пишет: цитата: | Можно ли № 3910 решить без программирования? |
|
Легко. 1) Число N < 100, поэтому его двоичный код содержит не более 7 знаков. 2) Если результат делится на 4, но не делится на 8, двоичный код заканчивается на 100. 3) Если бы при 2-м и 3-м выполнении шага 2 алгоритма дописывалась последняя цифра, то код заканчивался бы на 111, но это не так. 4) Поэтому два последних приписанных нуля вызваны тем, что в числе после приписывания первой 1 стало меньше нулей. 5) Следовательно, в числе N - равное количество нулей и единиц и оно заканчивается на 1. 6) Наибольшее такое число в двоичной системе имеет шесть знаков (не более 7!), три нуля и три единицы, причем заканчивается на 1. 7) Наибольшее такое число - 110001 2 = 49.
|
|
|
|
Отправлено: 20.04.22 07:38. Заголовок: Гениально. Спасибо б..
Гениально. Спасибо большое
|
|
|
|