Число разделов целого числа - это количество способов, которыми целое число может быть представлено как сумма положительных целых чисел.
Например:
5
4 + 1
3 + 2
3 + 1 + 1
2 + 2 + 1
2 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1
Существует 7 способов представления числа 5, поэтому 7 - это номер раздела, соответствующий числу 5.
Номера разделов: OEIS: # A000041
Направления
Напишите программу, которая принимает положительное целое число в качестве входных данных и выводит два числа, которые генерируют два ближайших номера разделов, к входному номеру.
- На входе должно быть 1 положительное целое число.
- Если входное значение не является номером раздела, выходное значение должно быть двумя различными положительными целыми числами, которые генерируют два ближайших номера раздела к входному номеру. (Если два номера разделов являются равными кандидатами на один из выходных номеров, не имеет значения, какой из них вы выберете.)
- Если входной сигнал представляет номер раздела, выход должен быть положительным целым числом 1 , который генерирует номер входа.
- Ввод и вывод могут быть в любом разумном формате.
- Вы можете предположить, что входное значение не будет больше 100 миллионов (например, выходное значение никогда не будет больше 95).
- Встроенные функции для расчета номеров разделов не допускаются, как и другие стандартные лазейки .
- Это код-гольф , поэтому выигрывает наименьшее количество байтов.
Номера разделов: OEIS: # A000041
Примеры
Input: 66
Output: 11, 12
(Номера разделов, которые соответствуют номерам 11 и 12, равны 56 и 77, которые являются двумя ближайшими номерами разделов к 66.)
Input: 42
Output: 10
(Число 42 уже является номером раздела, поэтому просто выведите номер, соответствующий номеру раздела.)
Input: 136
Output: 13, 14
(Два ближайших номера раздела 136 на самом деле оба МЕНЬШЕ, чем 136 (например, 101 и 135), поэтому на выходе получается 13 и 14, а не 14 и 15.)
Input: 1
Output: 0 or 1
(И 0, и 1 являются действительными выходами в этом особом случае.)
Input: 2484
Output: 26, 25 or 26, 27
(Оба этих выходы действительны, поскольку 2484 равен д я позиция с 1958 и 3010.)
Input: 4
Output: 3, 4
(Ага)
5
, находится вверху. (Я добавлю пояснения, если вы считаете, что это недостаточно ясно.)Ответы:
Pyth , 53
Объяснение и больше игры в гольф, чтобы следовать.
источник
Python 2, 179 байт
Использует рекурсивную формулу из пятиугольной теоремы Эйлера .
Позвони с
f(2484)
. Выход - это кортеж с одним или двумя числами.источник
Mathematica,
124123 байтаФормула для номеров разделов взята со страницы OEIS . (Может или нет обманывать ... Я не мог решить.)
Использование:
Я не отвечаю на победу. И я уверен, что это может быть дальше.
источник