음수가 아닌 정수를 취 프로그램이나 함수를 작성해야하는 N
입력 및 출력 또는 복귀 두 정수 (음수, 양수 또는 제로)으로 X
하고이 Y
.
정수는 무한히 많으므로 수학적 의미로 사용됩니다.
구현 된 기능은 bijective 이어야 합니다. 모든 것을위한 수단이 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
출력 한 정수 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이 반복되기 때문에 이것이 유효하지 않습니까?