介绍
在这个挑战中,我们将处理正整数的某种顺序。排序如下:
3, 5, 7, 9, 11, ...
2*3, 2*5, 2*7, 2*9, 2*11, ...
4*3, 4*5, 4*7, 4*9, 4*11, ...
8*3, 8*5, 8*7, 8*9, 8*11, ...
16*3, 16*5, 16*7, 16*9, 16*11, ...
...
... 64, 32, 16, 8, 4, 2, 1
我们首先以升序列出所有大于1的奇数整数。然后,我们列出两个大于1的奇数整数,然后分别列出4次,然后8次,依此类推:对于所有k,我们以升序列出2 k次大于1的奇数整数。最后,我们以降序列出两个幂,以1结尾。每个正整数在此“列表”中恰好出现一次。
更明确地说,考虑两个不同的正整数A = n·2 p和B = m·2 q,其中n,m≥1是奇数,而p,q≥0。然后,一来之前乙的排序,如果满足下列条件之一成立:
- n> 1,m> 1和p <q
- 1 <n <m且p = q
- n> m = 1
- n = m = 1并且p> q
这种排序出现在称为Sharkovskii定理的令人惊讶的数学结果中,该定理涉及动力学系统的周期点。我将不在这里详细介绍。
任务
您在此挑战中的任务是计算以上顺序。您的输入是两个正整数A和B,它们可能相等。如果在排序中A排在B之前,则输出为真实值,否则为假值。如果A = B,则您的输出应该是真实的。只要您保持一致,就可以按照任意顺序选择A和B。
您不必担心整数溢出,但是从理论上讲,您的算法应该适用于任意大的输入。
测试用例
真实实例
3 11
9 6
48 112
49 112
158 158
36 24
14 28
144 32
32 32
32 8
3 1
1 1
虚假实例
1 2
1 5
11 5
20 25
2 8
256 255
256 257
72 52
2176 1216
2176 2496
a&1|~b&1&f(a/2,b/2)
工作吗?