![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Последовательность 011212201220200112… строится так: сначала 0, затем повторяется следующее действие: уже написанную часть приписывают справа с заменой 0 на 1, 1 на 2, 2 на 0, т.е.
0->01->0112->01121220->011212202001-> 0112122020010112. Составить алгоритм, который по введённому N, (0<=N<=3 000 000 000) определяет, какое число стоит на N-ом месте в последовательности нулей ( за исключением представления числа 0).Используя эту функцию, получить двоичное 1|16-ричное 2 представления данных пяти чисел. Помогите сделать программку , мучаюсь уже целый месяц, хочу научится делать такие сложные задачи а самому понять ни как , нужна помощь )) |
#2
|
||||
|
||||
![]() Цитата:
|
#3
|
||||
|
||||
![]() Для числа в последовательности за номером:
Код:
function getprgvalue(const num:Integer):integer; var transpcount, pow2, m, a:Integer; function log2i(const cf:Integer):Integer; var n:Single; begin n:=log2(cf); if frac(n)<>0 then result:=trunc(n)+1 else result:=trunc(n); end; begin transpcount:=0; m:=num; while m>1 do begin pow2:=log2i(m); a:=round(power(2, pow2)/2); m:=m-a; inc(transpcount); end; result:=transpcount mod 3; end; ![]() |