N
入力として負でない整数を取り、2つの整数(負、ゼロまたは正)X
およびを出力または返すプログラムまたは関数を作成する必要がありY
ます。
整数は無限に多く存在するため、数学的な意味で使用されます。
実装された関数は全単射でなければなりません。これは、毎回N
異なるX
Y
ペアを出力しX
Y
なければならないことを意味し、すべてのペアはいくつかの入力に対してN
出力される必要がありますN
。
...
┌─────┬─────┬────┬────┬────┐
│-2 -2│-2 -1│-2 0│-2 1│-2 2│
├─────┼─────┼────┼────┼────┤
│-1 -2│-1 -1│-1 0│-1 1│-1 2│
├─────┼─────┼────┼────┼────┤
... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ...
├─────┼─────┼────┼────┼────┤
│1 -2 │1 -1 │1 0 │1 1 │1 2 │
├─────┼─────┼────┼────┼────┤
│2 -2 │2 -1 │2 0 │2 1 │2 2 │
└─────┴─────┴────┴────┴────┘
...
U V
とV U
は異なるペアであることに注意してくださいU!=V
。
詳細
- 言語が任意の大きな整数をサポートしていない場合は問題ありませんが、アルゴリズムは任意の大きな整数のデータ型で動作するはずです。コードは少なくともの入力値を引き続きサポートする必要があります
2^31-1
。 - 出力を文字列として印刷または返すことを選択した場合、先頭の
0
'や+
記号は使用できません。それ以外の場合、言語の標準整数表現は問題ありません。
例
場合は、タスクは非負の整数取っ全単射関数を作ることになりN
、出力1の整数X
関数であることができるソリューションを
if (input mod 2 == 0) return N/2 else return -(N+1)/2
、
いくつかの言語で実装されています。この関数はX = 0 -1 1 -2 2...
を返しますN = 0 1 2 3 4...
。
10=>11 12, 9=>10 11
、11が繰り返されるため、これは無効ですか?