함수가 가지고 있다고 길이의주기를 N 가 존재하는 경우 , X가 그 도메인되도록 F N (X) = (X) 및 (F) m (X) ≠ X 대 0 <m <N , 첨자 N 이고 N - f의 접힘 적용 . 길이 1 의주기 는 고정 점 f (x) = x 입니다.
당신의 작업은 구현하는 것입니다 전단 사 함수를 모든 긍정적 인 길이의 단 하나의주기를 가지고 자신의 정수에서, N을 . bijective 함수는 일대일 대응, 즉 모든 정수가 정확히 한 번 매핑됩니다. 길이가 정확히 하나의 사이클을 갖는 N 정확히 있다는 것을 의미 N 고유 번호 X 되는 F N (X) = X 및 F m (x)가 X ≠ 대 0 <m <N을 .
다음은 그러한 함수가 x = 0 주위에 어떻게 보이는지에 대한 예입니다 .
x ... -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
f(x) ... 2 4 6 -3 -1 1 -4 0 -2 5 7 -7 -6 3 -5 ...
이 발췌문에는 길이 1 ~ 5의 주기가 포함되어 있습니다 .
n cycle
1 0
2 -2 1
3 -4 -3 -1
4 -5 6 3 7
5 -7 2 5 -6 4
...
위에서 저는 수학적인 의미에서만 "함수"를 사용하고 있습니다. 단일 부호있는 정수를 입력으로 사용하고 단일 부호있는 정수를 반환하는 한 선택한 언어로 함수 또는 전체 프로그램을 작성할 수 있습니다. 평소와 같이 STDIN, 명령 줄 인수, 함수 인수 등을 통해 입력을 받고 STDOUT, 함수 반환 값 또는 함수 (출력) 인수 등을 통해 출력 할 수 있습니다.
물론 많은 언어는 (임의의) 임의 정밀도 정수를 지원하지 않습니다. 적어도 [-127, 127] 범위를 포함 하고 언어의 정수 유형이 임의의 정수로 대체되면 임의의 정수 에 대해 작동하는 한, 구현이 언어의 기본 정수 유형의 범위에서만 작동하는 것이 좋습니다. 정밀 정수.
표준 코드 골프 규칙이 적용됩니다.