三角形数

三角形数 \(T_{n} = \sum_{i = 1}^{n} i = \frac{n (n + 1)}{2}\) 。

从图上看:

text 复制代码
   T₁ = 1        T₂ = 3           T₃ = 6           T₄ = 10
      ●             ●                ●                ●
                   ● ●              ● ●              ● ●
                                   ● ● ●            ● ● ●
                                                   ● ● ● ●

就像一个三角形一样。

数学性质:

  1. 递推关系: \(T_{n} = T_{n - 1} + n\)

  2. 奇偶性: \(T_{n}\) 与 \(\frac{n (n + 1)}{2}\) 的奇偶性一致,即 \(T_{n}\) 为奇数 当且仅当 \(n \equiv 1 \pmod{4}\) 或 \(n \equiv 2 \pmod{4}\)。

    \(T_{n} = \frac{n (n + 1)}{2}\) 所以 \(T_{n}\) 与 \(\frac{n (n + 1)}{2}\) 的奇偶性一致。

    要判断 \(\frac{n (n +1 )}{2}\) 是否为奇数,就需要知道 \(n(n + 1)\) 是否包含因子 \(2\)。

    观察 \(n\) 和 \(n + 1\) 是连续的,其中恰好有一个偶数。设这个偶数为 \(2k\),则乘积为 \(2k \times \text{奇数}\),在除去分母的 \(2\) 后,剩下了 \(k \times \text{奇数}\),所以最终的奇偶性是由 \(k\) 控制的,\(k\) 为奇数,结果就是奇数,反之亦然。

    对 \(n(n + 1)\) 按 \(n\) 模 \(4\) 分类:

    • \(n = 4m\): 偶数部分为 \(n = 4m = 2 \times 2m\),则 \(k = 2m\) 为偶数 \(\to T_{n}\) 为偶数。
    • \(n = 4m + 1\): 偶数部分为 \(n + 1 = 4m + 2 = 2(2m + 1)\),则 \(k = 2m + 1\) 为奇数 \(\to T_{n}\) 为奇数。
    • \(n = 4m + 2\): 偶数部分为 \(n = 4m + 2 = 2(2m + 1)\),则 \(k = 2m + 1\) 为奇数 \(\to T_{n}\) 为奇数。
    • \(n = 4m + 3\): 偶数部分为 \(n + 1 = 4m + 4 = 2(2m + 2)\),则 \(k = 2m + 2\) 为偶数 \(\to T_{n}\) 为偶数。

    所以 \(T_{n}\) 为奇数 当且仅当 \(n \equiv 1 \pmod{4}\) 或 \(n \equiv 2 \pmod{4}\)。

  3. 平方关系: 相邻两个三角形数的和为平方数,即 \(T_{n - 1} + T_{n} = n^{2}\)。

    我们将前面的图中的每个三角形进行左对齐:

    text 复制代码
       T₁ = 1        T₂ = 3           T₃ = 6           T₄ = 10
       ●             ●                ●                ●
                     ● ●              ● ●              ● ●
                                      ● ● ●            ● ● ●
                                                       ● ● ● ●

    发现任选一个除第一个外的其他三角形,将前面一个三角形翻转后可以完美的补全当前三角形的缺口,形成一个正方形。

前n个三角形数的和:

\S_{n} = \\frac{n (n + 1) (n + 2)}{6} = \\binom{n + 2}{3} \\

证明:

设 \(S_{n} = T_{1} + T_{2} + \cdots + T_{n}\)

\\\begin{split} S_{n} \&= T_{1} + T_{2} + \\cdots + T_{n} \\\\ \& = \\sum_{k = 1}\^{n} \\frac{k(k + 1)}{2} \\\\ \& = \\frac{1}{2} \\sum_{k = 1}\^{n} \\left(k\^{2} + k \\right)\\\\ \& = \\frac{1}{2} \\left(\\sum_{k = 1}\^{n} k\^{2} + \\sum_{k = 1}\^{n} k \\right) \\end{split} \\

因为 \(k^{2} = 2 \binom{k}{2} + \binom{k}{1}\)

:

\\\begin{split} 2 \\binom{k}{2} + \\binom{k}{1} \&= 2 \\times \\frac{k (k - 1)}{2} + k \\\\ \&= k\^{2} - k + k \\\\ \&= k\^{2} \\end{split} \\

所以

\\\begin{split} \\sum_{k = 1}\^{n} k\^{2} \&= \\sum_{k = 1}\^{n}\\left( 2\\binom{k}{2} + \\binom{k}{1} \\right) \\\\ \&= 2\\sum_{k = 1}\^{n} \\binom{k}{2} + \\sum_{k = 1}\^{n} \\binom{k}{1} \\end{split} \\

其中 \(\sum_{k = 1}^{n} \binom{k}{2}\) 可以通过 曲棍球棒恒等式 \(\sum_{k = m}^{n} \binom{k}{m} = \binom{n + 1}{m + 1}\) 快速得到。

\\\begin{split} \\sum_{k = 1}\^{n} \\binom{k}{2} \&= \\binom{1}{2} + \\sum_{k = 2}\^{n} \\binom{k}{2} \\\\ \&= 0 + \\binom{n + 1}{2 + 1} \\\\ \&= \\binom{n + 1}{3} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1)}{3 \\cdot 2 \\cdot 1} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1)}{6} \\end{split} \\

而 \(\binom{k}{1} = k\), 故

\\\sum_{k = 1}\^{n} \\binom{k}{1} = \\sum_{k = 1}\^{n} k = \\frac{n(n + 1)}{2} \\

所以

\\\begin{split} S_{n} \&= \\frac{1}{2} \\left(\\sum_{k = 1}\^{n} k\^{2} + \\sum_{k = 1}\^{n} k \\right) \\\\ \&= \\frac{1}{2} \\left( 2\\sum_{k = 1}\^{n} \\binom{k}{2} + \\sum_{k = 1}\^{n} \\binom{k}{1} + \\sum_{k = 1}\^{n} k \\right) \\\\ \&= \\frac{1}{2} \\left( 2\\sum_{k = 1}\^{n} \\binom{k}{2} + 2\\sum_{k = 1}\^{n} k \\right) \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1)}{6} + \\frac{n(n + 1)}{2} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1) + 3 \\cdot n \\cdot (n + 1)}{6} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1 + 3)}{6} \\\\ \&= \\frac{n \\cdot (n + 1) \\cdot (n + 2)}{6} \\end{split} \\

相关推荐
徐凤年_13 分钟前
rog_map参数理解
算法
春日见14 分钟前
算法与数据结构----哈希表
数据结构·人工智能·算法·机器学习·自动驾驶·哈希算法·散列表
叩码以求索1 小时前
统计按位或能得到最大值的子集数目(一)
数据结构·算法
tachibana21 小时前
hot100 数组中的第K个最大元素(215)
java·数据结构·算法·leetcode
txzrxz1 小时前
单调队列讲解
数据结构·c++·算法·单调队列
不会就选b2 小时前
算法日常・每日刷题--<快排>4
算法
Keven_112 小时前
算法札记:树状数组的用途
数据结构·算法
用户677437175812 小时前
C++函数参数传递方式详解:string、string&、const string、const string&该怎么选?
算法
cpp_25013 小时前
P1540 [NOIP 2010 提高组] 机器翻译
数据结构·c++·算法·队列·noip·洛谷题解
晚笙coding3 小时前
LeetCode 98:验证二叉搜索树 —— 从局部判断到全局范围约束的递归思想
算法·leetcode·职场和发展