生成看不见的数字
假设子字符串是原始字符串的任何连续部分。例如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, …