我希望得到二进制数序列的第n项,只有两个设置位按递增顺序
(11,101,110,1001,1010,1100,10001,10010,10100,11000....).
如果我知道下面这个系列的第n个术语,我发现它可以用字符串操作形成:
(2,3,3,4,4,4,5,5,5,5,6,6,6,6,6 .....)。
有人可以帮我解决如何获得第n个系列词:
(2,3,3,4,4,4,5,5,5,5,6,6,6,6,6 .....)
编辑:请专注于获得系列的第n个术语(2,3,3,4,4,4,5,5,5,5,6,6,6,6,6 ..... )。我找到了其他部分。
答案 0 :(得分:2)
答案 1 :(得分:1)
长度为N的C(N,1)= N组合,从1开始,含有2个。 所以你有一个2,两个3,三个四等等 - 注意算术级数。另一种观点:我们可以看到第一个
2: at the 1st place
3: 2nd
4: 4th
5: 7
6: 11
k: (k-1)*(k-2)/2 + 1 //from arithmetic progression sum formula
因此求解二次方程
N = (k-1) * (k-2) / 2 + 1
or
k^2 - 3 * k + 4 - 2 * N = 0
对于未知的k - 找到正向下降到整数,你将在序列的第n个位置得到k作为数字
D = 9 - 16 + 8 * N = 8*N - 7
k = Floor((3 + Sqrt(8*N - 7)) / 2)
example: for N=7 k = (3+Sqrt(56-7))/2 = 5
for N=10 k = Floor(3+Sqrt(80-7))/2 = Floor(5.77) = 5