Соревнование
Для этого испытания вы должны определить, входит ли данное число в набор Кантора. Итак, во-первых, давайте определим набор Кантора.
Сначала начните с чисел от 0 до 1. Любые числа вне этого диапазона не входят в набор Кантора. Теперь давайте разделим числа на три равные части: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1]. Любые числа, не входящие в диапазоны первой и последней частей, не входят в набор Кантора. Теперь повторите этот процесс для сегментов [0,1 / 3] и [2/3, 1]. Затем вы повторяете, что осталось. Вы продолжаете делать это вечно. В конце концов, все оставшиеся числа находятся в наборе Кантора. Вот схема первых шести итераций:
вход
Два целых числа x
и y
.
0 < y < 2^15
0 <= x <= y
Наибольшим общим знаменателем x
и y
является 1, если только x == 0
.
Выход
Правда, если x/y
есть в наборе Кантора.
Ложь, если x/y
нет в наборе Кантора.
Примеры
Теперь давайте посмотрим несколько примеров чисел, которые есть в наборе Кантора.
1/3 -> true
Это на границе, и границы никогда не удаляются.
1/4 -> true
1/4
никогда не находится в средней трети сегмента, хотя он также никогда не находится на границе. Если вы пойдете по его пути, вы обнаружите, что он чередуется между первой и последней третями раздела.
1/13 -> true
1/13
чередуется между первым, первым и последним разделами.
1/5 -> false
1/5
попадает в первый пустой блок третьего ряда на приведенной выше диаграмме, между 1/9 и 2/9.
Другие тестовые случаи:
0/4 -> true
3/10 -> true
3/4 -> true
10/13 -> true
1/1 -> true
12/19 -> false
5/17 -> false
3/5 -> false
1/7 -> false
1/2 -> false
Вы можете попробовать другие числа с этим фрагментом:
Задача
Человек с наименьшим количеством байтов побеждает.
x == 0