多くのプログラミング言語は、整数の2進数(2進数)を操作する演算子を提供します。これらの演算子を他のベースに一般化する1つの方法を次に示します。
ましょう、X及びYは塩基で一桁の数字であるB。単項演算子の定義~
とバイナリ演算子&
、|
および^
、そのようなことを:
- 〜x =(B-1)-x
- x&y = min(x、y)
- x | y = max(x、y)
- x ^ y =(x&〜y)| (y&〜x)
B = 2の場合、おなじみのビット単位のNOT、AND、OR、XOR演算子が得られることに注意してください。
B = 10の場合、「10進数XOR」テーブルを取得します。
^ │ 0 1 2 3 4 5 6 7 8 9
──┼────────────────────
0 │ 0 1 2 3 4 5 6 7 8 9
1 │ 1 1 2 3 4 5 6 7 8 8
2 │ 2 2 2 3 4 5 6 7 7 7
3 │ 3 3 3 3 4 5 6 6 6 6
4 │ 4 4 4 4 4 5 5 5 5 5
5 │ 5 5 5 5 5 4 4 4 4 4
6 │ 6 6 6 6 5 4 3 3 3 3
7 │ 7 7 7 6 5 4 3 2 2 2
8 │ 8 8 7 6 5 4 3 2 1 1
9 │ 9 8 7 6 5 4 3 2 1 0
複数桁の番号の場合、1桁の演算子を1桁ずつ適用します。たとえば、12345 ^ 24680 = 24655です。理由は次のとおりです。
- 1 ^ 2 = 2
- 2 ^ 4 = 4
- 3 ^ 6 = 6
- 4 ^ 8 = 5
- 5 ^ 0 = 5
オペランドの長さが異なる場合は、短い方に先行ゼロを埋め込みます。
チャレンジ
入力として2つの整数(0〜999 999 999を含むと想定される可能性があります)を取り、上記で定義した2つの数値の「10進数XOR」を出力するプログラムまたは関数をできる限り少ないバイトで書き込みます。
テストケース
- 12345、24680→24655
- 12345、6789→16654
- 2019、5779→5770
- 0、999999999→999999999
- 0、0→0
09
入力に対して許容可能な結果はあります90, 99
か?
A^B^B=A
a^b=b^a
とa^b^b=a
奇素数除数と塩基について