Кратко: число подходящих троек равно
\[ \boxed{\left\lfloor \frac{n^2+6}{12}\right\rfloor} \]
Это же можно понимать как «ближайшее целое к \(n^2/12\)».
Почему так:
- Каждая тройка \(a\le b\le c\) — это ровно один неупорядоченный набор трёх положительных чисел с суммой \(n\).
- Всего упорядоченных троек положительных чисел с суммой \(n\): \[ \binom{n-1}{2}. \]
- По симметриям/лемме Бёрнсайда:
\[
N=\frac{\binom{n-1}{2}+3\left\lfloor\frac{n-1}{2}\right\rfloor+2[\,3\mid n\,]}{6},
\]
где \( [3\mid n] \) равно 1, если \(n\) делится на 3, иначе 0.
Слагаемые учитывают перестановки: все разные, две совпадают, все три совпадают. - После разбора остатков \(n\) по модулю 6 эта формула упрощается до \[ N=\left\lfloor \frac{n^2+6}{12}\right\rfloor. \]
Решение за \(O(1)\):
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long n;
cin >> n;
long long ans = (n * n + 6) / 12;
cout << ans << '\n';
return 0;
}
Проверка:
- \(n=3\): \((9+6)/12=15/12=1\).
- \(n=7\): \((49+6)/12=55/12=4\).
Для \(n\le2\cdot10^9\) значение \(n^2+6\) помещается в long long: \(4\cdot10^{18}<9.22\cdot10^{18}\).
Строка про дополнительный остаток не влияет на ответ: при данных ограничениях сам ответ меньше указанного модуля.
