pengantar
Dalam tantangan ini, kita akan berhadapan dengan pemesanan tertentu dari bilangan bulat positif. Pemesanannya seperti ini:
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
Kami pertama-tama mendaftar semua bilangan bulat ganjil yang lebih besar dari 1 dalam urutan naik. Kemudian kami mendaftar dua kali bilangan bulat ganjil lebih besar dari 1, kemudian 4 kali, kemudian 8 kali, dan seterusnya: untuk semua k , kami mencantumkan 2 k kali bilangan bulat ganjil lebih besar dari 1 dalam urutan naik. Akhirnya, kami daftar kekuatan dua dalam urutan menurun , berakhir pada 1. Setiap bilangan bulat positif terjadi dalam "daftar" ini tepat sekali.
Lebih eksplisit, pertimbangkan dua bilangan bulat positif A = n · 2 p dan B = m · 2 q , di mana n, m ≥ 1 ganjil, dan p, q ≥ 0 . Kemudian A muncul sebelum B dalam pemesanan, jika salah satu dari kondisi berikut berlaku:
- n> 1 , m> 1 dan p <q
- 1 <n <m dan p = q
- n> m = 1
- n = m = 1 dan p> q
Urutan ini muncul dalam hasil matematika mengejutkan yang dikenal sebagai teorema Sharkovskii , yang menyangkut poin periodik sistem dinamik. Saya tidak akan membahas detailnya di sini.
Tugas
Tugas Anda dalam tantangan ini adalah untuk menghitung pemesanan di atas. Input Anda adalah dua bilangan bulat positif A dan B , yang mungkin sama. Output Anda adalah nilai kebenaran jika A datang sebelum B dalam pemesanan, dan nilai palsu sebaliknya. Jika A = B , output Anda harus benar. Anda dapat mengambil A dan B dalam urutan mana pun, selama Anda konsisten.
Anda tidak perlu khawatir tentang integer overflow, tetapi algoritme Anda secara teoritis harus bekerja untuk input besar yang sewenang-wenang.
Uji kasus
Contoh yang benar
3 11
9 6
48 112
49 112
158 158
36 24
14 28
144 32
32 32
32 8
3 1
1 1
Contoh palsu
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)
bekerja