ガウス整数はa+bi
、a
とのb
両方の形式の複素数です。ベース-1 + iでは、すべてのガウス整数は、記号を示す記号を必要0
と1
せずに、数字とを使用して一意に表現できます。
たとえば1100
、基数-1 + iは10進数2を表します。
1*(-1+i)^3 + 1*(-1+i)^2 + 0*(-1+i)^1 + 0*(-1+i)^0
= (2+2i) + (-2i) + 0 + 0
= 2
入力は、数字を使用して表されるベース-1 + iの2つのガウス整数になります01
。これは、次のいずれかの形式をとることができます。
- 2つの個別の数字列、
01
基数-1 + iの数値を表す2つの10進整数(1100
基数-1 + iの2など)- 基数-1 + iの数値を表す2つの2進整数(10進数
12
または0b1100
基数-1 + iの2など) - 単一の非英数字セパレーターによって2桁の文字列/バイナリ整数を分離する単一の文字列(
1100 1100
または12,12
2 + 2の場合)
2つのガウス整数の合計を、ベース-1 + iで出力し、数字を使用して表されます01
(入力として許可される形式の1つで、必ずしも同じ選択ではありません)。出力には、有限数の先行ゼロを含めることができます。
関数またはプログラムは、それぞれ最大30桁の入力に対して2秒以内に終了する必要があります。
追加の説明
- 入力に余分な先行ゼロが含まれていないと想定できます。0の特殊なケースでは
0
、表現として空の文字列または空の文字列を選択できます。
テストケース
0, 0 => 0 # 0 + 0 = 0
0, 1 => 1 # 0 + 1 = 1
1, 1 => 1100 # 1 + 1 = 2
1100, 1100 => 111010000 # 2 + 2 = 4
1101, 1101 => 111011100 # 3 + 3 = 6
110111001100, 1110011011100 => 0 # 42 + (-42) = 0
11, 111 => 0 # i + (-i) = 0
11, 110 => 11101 # i + (-1-i) = -1
10101, 11011 => 10010 # (-3-2i) + (-2+3i) = (-5+i)
1010100101, 111101 => 1110100000100 # (-19+2i) + (3-4i) = (-16-2i)
より長いテストケース:
11011011010110101110010001001, 111100010100101001001010010101 => 0
111111111111111111111111111111, 111111111111111111111111111111 => 100100100100100100100100100100
101101110111011101110111011101, 101101110111011101110111011101 => 11101001010001000100010001000100011100
100100010101001101010110101010, 100010011101001011111110101000 => 110000110010101100001100111100010
-1+i
をi-1
に変更すると、1バイト節約できます。