Послідовність Ремамана визначається наступним чином:
або в псевдокоді:
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 і виведіть або перші 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) не вважається дублікатом, якщо в (0) ... a (n-1) немає однакових чисел , навіть якщо a (n + m) == 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
Це код-гольф , тому найкоротший код на кожній мові виграє!
Пояснення заохочуються!
43
виводиться раніше 42
? Він з’являється спочатку в послідовності Рекамана. Ви маєте на увазі вихід спочатку той, який вперше виявляється дублікатом?