交变调和级数是一个著名的收敛级数。
“很明显”,很明显它收敛到2的自然对数。或者是吗?
由于该系列不是绝对收敛的,只需简单地重新排列术语,我就可以使其接近我想要的任何形式。假设我希望级数收敛到e。我所要做的就是:
如果您不了解这一模式,那么没有一个显而易见的模式。运作方式如下:
- 从正项和负项考虑交变谐波序列的项。
- 正好相加就足以超过我们的目标(e)。(又名
sum > target
) - 减去下一个负项。
- 回到2。
请注意,在步骤2中,如果是我们的sum == target
,则应添加另一个正项。
由此我们可以定义一个与每个数字关联的序列,如下所示:
- 遵循上述算法
- 对于每个正项,输出1。
- 对于每个负项,输出0。
我们将此序列称为数字的“和谐位模式”。例如,e的HBP开始于:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
您的挑战:
您将获得:
- [-10,10]范围内的合理输入目标(请注意:即使通过谐波序列达到10,也需要数百万个项)。这可以是小数(aka
1.1
),也可以直接采用有理数(aka12/100
) - 一个正的
int
n输入,指定要输出的和谐位模式的项数。
您应该将目标的确切和谐比特模式输出到指定数量的术语。您可以输出以空格分隔的值,逗号分隔,不分隔等。只要0和1的模式清晰可见,并以一致的间隔从左到右读取。
测试用例
>>> 0, 1
1
>>> 0, 2
10
>>> 0, 7
1000010
>>> 1, 10
1101011011
>>> 1.01, 3
110
>>> 1.01, 24
110101101101101101101101
>>> 2.71, 32
11111111111111111111111111111111
>>> 2.71, 144
111111111111111111111111111111110111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111
>>> -9.8, 100
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
请注意,由于-9.8
太大,因此1
将输出的第一个在149496620
第n个词的某处(通过浮点数计算,因此该值可能不准确)。
h a p q
而不是h p q a
保存一个字节。