Введение
В этой задаче мы будем иметь дело с определенным порядком положительных целых чисел. Порядок выглядит так:
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 . Тогда A предшествует B в порядке, если выполняется одно из следующих условий:
- n> 1 , m> 1 и p <q
- 1 <n <m и p = q
- n> m = 1
- n = m = 1 и p> q
Это упорядочение появляется в удивительном математическом результате, известном как теорема Шарковского , которая касается периодических точек динамических систем. Я не буду вдаваться в подробности здесь.
Задание
Ваша задача в этой задаче - вычислить вышеуказанный порядок. Ваши входные данные - это два натуральных числа 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)
работать?