Recamán의 시퀀스 는 다음과 같이 정의됩니다.
또는 의사 코드로 :
a(0) = 0,
if (a(n - 1) - n) > 0 and it is not
already included in the sequence,
a(n) = a(n - 1) - n
else
a(n) = a(n - 1) + n.
첫 번째 숫자는 ( OEIS A005132 )입니다.
0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9, 24, 8, 25, 43, 62, 42, 63, 41, 18, 42
이 순서를 연구하면 예를 들어 a(20) = a(24) = 42
(0 인덱스) 와 같은 중복이 있음을 알 수 있습니다 . 시퀀스에서 하나 이상의 동일한 번호가있는 경우 중복 번호를 호출합니다.
도전:
정수 입력 k 를 취하고 Recamán의 시퀀스에서 중복으로 발견되는 순서대로 첫 번째 k 중복 숫자를 출력하거나 k 번째 숫자 .
이 첫 번째 중복 번호는 다음과 같습니다.
42, 43, 78, 79, 153, 154, 155, 156, 157, 152, 265, 261, 262, 135, 136, 269, 453, 454, 257, 258, 259, 260, 261, 262
몇 가지 참고할 사항 :
- a (n + m) == a (n) 인 경우에도 a (0) ... a (n-1)에 동일한 숫자가없는 경우 a (n) 은 중복으로 계산되지 않습니다 .
- 42는 43 이전입니다. 43의 복제 전에 복제가 발생하기 때문입니다.
- 순서는 정렬되지 않습니다
- 이 순서에도 중복 요소가 있습니다. 예를 들어 12 번째와 23 번째 숫자는 모두 262 (0 인덱스)입니다.
테스트 사례 (0 인덱스)
k Output
0 42
9 152
12 262
23 262
944 5197
945 10023
10000 62114
이것은 code-golf 이므로 각 언어에서 가장 짧은 코드가 승리합니다!
설명이 권장됩니다!
43
이전에 출력 되지 42
않습니까? Recamán의 순서에서 처음으로 나타납니다. 먼저 중복 된 것으로 처음 출력 된 것을 의미합니까?