假设子字符串是原始字符串的任何连续部分。例如cat
是的子字符串concatenate
。我们将说适当的子字符串是不等于原始字符串的子字符串。例如,concatenate
是一个子串,concatenate
但不是正确的子串。(单个字符串没有正确的子字符串)
现在,我们将使用这些术语定义一个序列。此序列中的第n个术语将是最小的数字,以使其二进制表示形式存在适当的子字符串,而不是该序列中任何较早术语的子字符串。第一项是10
。
作为练习,让我们生成前5个项。我将使用二进制文件来简化事情。
第一项是10
。由于11
,下一个最小的数字只有一个适当的子字符串,1
它也是的子字符串10
,11
不在序列中。 100
但是确实包含适当的子字符串00
,而不是的子字符串,10
因此100
我们的下一个术语也是如此。下一步是101
包含01
将其添加到序列中的唯一正确子字符串,然后110
包含11
是新的将其添加到序列中的正确子字符串。
现在我们有
10, 100, 101, 110
111
接下来是,但它仅包含子字符串1
,11
而不是一个术语。 1000
但是包含000
将其添加到序列中。
这是十进制中的前几个术语
2, 4, 5, 6, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 54, 56, 58
任务
要么
以n为输入并生成n按此顺序个项(索引为0或1)
连续输出序列项
这是代码高尔夫球的答案,以字节计分,字节越少越好。
n
)吗?
a(36)
是47(索引为1)。