Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи на заказ _ Задача за 1 wmz

Автор: FIREMAX 30.11.2012 1:30

Последовательность 011212201220200112… строится так: сначала 0, затем повторяется следующее действие: уже написанную часть приписывают справа с заменой 0 на 1, 1 на 2, 2 на 0, т.е.
0->01->0112->01121220->…
Составить алгоритм, который по введённому N, (0<=N<=3 000 000 000) определяет, какое число стоит на N-ом месте в последовательности нулей ( за исключением представления числа 0).Используя эту функцию, получить двоичное 1|16-ричное 2 представления данных пяти чисел.

Автор: мисс_граффити 1.12.2012 16:20

думаю, так: длина последовательности - это всегда степень двойки.
берем N. находим минимальную длину последовательности, т.е. такое m, что 2^m>=N.
на месте N будет увеличенная на 1 цифра с места (N-2^(m-1)).
Так рекурсивно добираемся до первого нуля, считая кол-во шагов.