Задний план
Рассмотрим последовательность, определенную следующим образом:
- Первый элемент 0;
- Второй элемент 4;
- Начиная с третьего элемента, его значение можно рассчитать по формуле:
- Взятие набора целых чисел от 0 до предыдущего элемента последовательности (включительно или исключительно, это не имеет значения);
- Удаление любых целых чисел, которые уже появились ранее в последовательности из набора;
- Складывая оставшиеся элементы набора; это значение, которое вы хотите.
Интересно, что эта последовательность еще не появилась в OEIS .
Задание
Напишите программу или функцию, которая принимает целое число n в качестве входных данных и выводит n- й элемент последовательности.
Контрольные примеры
Первые несколько элементов последовательности:
- 0
- 4
- 6 (1 + 2 + 3)
- 11 (1 + 2 + 3 + 5)
- 45 (1 + 2 + 3 + 5 + 7 + 8 + 9 + 10)
- 969 (1 + 2 + 3 + 5 + 7… 10 + 12… 44)
- 468930 (1 + 2 + 3 + 5 + 7… 10 + 12… 44 + 46… 968)
Разъяснения
- Ваша программа теоретически должна быть способна обрабатывать произвольное число n, если она запускается на варианте вашего языка, который имеет неограниченно большие целые числа и имеет доступ к неограниченному объему памяти. (Маловероятно, что языки без бинумов смогут выйти за рамки 468930, но это не повод жестко закодировать ответы.)
- Вы можете выбрать индексирование на основе 0 или 1 для последовательности (например, вам решать, вернет ли n = 1 первый элемент, n = 2 второй элемент и т. Д., Или n = 0 вернет первый элемент , п = 1 , второй элемент, и так далее).
- Нет требований ни к используемому алгоритму, ни к его эффективности; вы можете напрямую реализовать определение последовательности (даже если она действительно неэффективна), и вы можете также реализовать другой алгоритм, который приводит к тем же результатам.
Состояние победы
Это код-гольф , поэтому выигрывает самая короткая правильная программа, измеряемая в байтах.