Найближчі номери розділів


12

Кількість розділів цілого числа - це кількість способів, за допомогою яких ціле число можна представити у вигляді суми позитивних цілих чисел.

Наприклад:

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

(Так)


Ви не визначали, що таке номер розділу
гордий haskeller

@proudhaskeller Номери розділів - це числа, які пов'язані в послідовності OEIS. Пояснення того, для чого є номер розділу 5вгорі. (Я додам роз'яснення, якщо ви вважаєте, що це недостатньо зрозуміло.)
kukac67

1
Це дуже близько до того, що є справжнім питанням щодо попереднього питання про розділ .
Пітер Тейлор

Відповіді:


2

Піта , 53

L?!b<b1sm&d*^_1tdy-b/*dt*3d2r_bhbJo^-QyN2U99<J-2qQyhJ

Пояснення та більше гольфу слід.


4

Пітон 2, 179 байт

Z=range(1,99)
R=Z+[1]
for i in Z:R[i]=sum(-(-1)**k*(3*k*k-k<=i*2and R[i-k*(3*k-1)/2])for k in range(-i,i+1)if k)
f=lambda n:zip(*sorted((abs(n-R[i]),i)for i in Z))[1][:2-(n in R)]

Використовується рекурсивна формула з п'ятикутної теореми Ейлера .

Подзвоніть з f(2484). Вихід - кортеж з одним або двома числами.


2

Математика, 124 123 байт

f@n_:=(p=SeriesCoefficient[1/Product[1-x^k,{k,#}],{x,0,#}]&;s=SortBy[Range@95,Abs[n-p@#]&];If[p@s[[1]]==n,s[[1]],s~Take~2])

Формула для номерів розділів, взята зі сторінки OEIS . (Можливо, а може і не обманювати ... Я не міг вирішити.)

Використання:

In: f[136]

Out: {14, 13}

Я не відповідаю, щоб перемогти. І я впевнений, що це можна було б пограти в гольф далі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.