チャレンジ
この課題では、特定の番号がカンターセットに含まれているかどうかを判断する必要があります。最初に、Cantorセットを定義しましょう。
最初に、0〜1の数字から始めます。この範囲外の数字は、Cantorセットには含まれません。ここで、数字を3つの等しい部分に分割しましょう:[0,1 / 3]、[1 / 3,2 / 3]、[2/3、1]。最初と最後の部分の範囲内にない数値は、カンターセットに含まれません。ここで、セグメント[0,1 / 3]および[2/3、1]に対してこのプロセスを繰り返します。それから残り物を繰り返します。あなたはこれを永遠にやり続けます。最終的に、残りのすべての番号はカンターセットに含まれます。以下に、最初の6つの反復の図を示します。
入力
2つの整数x
とy
。
0 < y < 2^15
0 <= x <= y
最大公約数x
とy
しない限り、1ですx == 0
。
出力
x/y
Cantorセットにある場合は真実です。カントールセットにない
場合x/y
は偽。
例
次に、Cantorセットに含まれる数値の例を見てみましょう。
1/3 -> true
それは境界上にあり、境界は削除されません。
1/4 -> true
1/4
セグメントの中央の3分の1にあることはありませんが、どちらの境界にもあることはありません。そのパスをたどると、実際にはセクションの最初と最後の3分の1にあることがわかります。
1/13 -> true
1/13
最初のセクション、最初のセクション、最後のセクションを交互に切り替えます。
1/5 -> false
1/5
上の図の3行目の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