это хорошее направление. Она даже есть в энциклопедии:
A056792. И если отсортировать ее по возрастанию в паре с натуральными числами, то мы как раз получим
A243571.
Чтобы проверить ваше решение, я написал программку на PARI/GP:
Код:
l(n, m) = logint(n, m)
wt(n) = hammingweight(n)
w1 = [1, 2, 3, 4, 5, 6, 8, 7, 9, 10, 12, 16, 11, 13, 14, 17, 18, 20, 24, 32, 15, 19, 21, 22, 25, 26, 28, 33, 34, 36, 40, 48, 64, 23, 27, 29, 30, 35, 37, 38, 41, 42, 44, 49, 50, 52, 56, 65, 66, 68, 72, 80, 96, 128, 31, 39, 43, 45, 46, 51, 53, 54, 57, 58, 60, 67, 69]
b6(n) = my(A = Vecrev(binary(n)), B = 0, v1); v1 = vector(wt(n), i, 0); for(i=1, #A, if(A[i], B++; v1[B] = i)); v1
b7(n) = my(L = l(n, 2), A = wt(n), B = A + L, C = b6(n)); fibonacci(B+1) + sum(j=1, L, binomial(j-1, B-j)) + sum(j=1, A, binomial(C[j]-1, j))
b8(n) = b7(w1[n])
В конце я подставляю в вашу формулу последовательные значения
A243571, следовательно она должна вернуть натуральные числа. К сожалению она возвращает что-то другое.
Проверка, что
это
-ый член последовательности, это как бы не вопрос о нахождении
если известно
. Последняя операция может оказаться относительно дорогой. А вот чтобы просто проверить - есть как минимум одно элегантное решение. К сожалению я не до конца понимаю как оно работает, но возможно после его публикации кто-нибудь сможет мне это объяснить.