Мне нужно реализовать последовательность https://oeis.org/A323119 на С++, но конкретных формул нет. Как это сделать ?
Раз точной формулы нет, то от Вас требуется рассчитать значения самостоятельно.
Приведу намеренно примитивный способ на Python - генерация всех возможных композиций числа на слагаемые в диапазоне k..k+2 с проверкой, что в композиции действительно есть конечные значения диапазона
def comp2_int(n, mn, mx, hasmn, hasmx):
if n == 0 and hasmn and hasmx:
return 1
if n < 0:
return 0
res = 0
for i in range(mn, mx + 1):
res += comp2_int(n - i, mn, mx, (i == mn) or hasmn, (i == mx) or hasmx)
return res
def comp2(n):
res = 0
for k in range(1, n-1):
res += comp2_int(n, k, k+2, False, False)
return res
for m in range(15):
print(m, comp2(m))
3 0
4 2
5 3
6 12
7 20
8 49
9 95
10 188
11 366
12 714
13 1347
14 2565
Более эффективно может быть использовать генерацию наборов с невозрастающими слагаемыми (например, 5=3+1+1
), затем умножать на количество перестановок с повторениями (в данном случае 3=3!(2!1!)
), но ещё лучше - какой-либо вид динамического программирования, когда мы повторно используем вычисленные для некоторого набора (n, min, max)
(причём max-min может быть не только 2, но и 0 и 1) результаты позже.
Ну это уже для Вас упражнение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
IDE CLion может переходить в библиотеку #include <mariadb/mysqlh>, то есть, файл найден, однако проект не компилируется: /home/nerd/CLionProjects/ISPstats/main
Это мой код по сортировке фамилий, Входят фамилии, пробегаются по функции Алфавит, и потом им присваивается соответствующее значение в массиве