1 条题解

  • 0
    @ 2025-10-30 9:38:17

    「PA 2018 Final」Sumka 题解

    核心思路

    1. 问题转化

    我们需要将给定的整数 nn 表示为最多 55三角形数的和:

    $$n = T_{k_1} + T_{k_2} + \cdots + T_{k_s}, \quad 1 \leq s \leq 5 $$

    其中 Tk=k(k+1)2T_k = \frac{k(k+1)}{2} 是第 kk 个三角形数。

    2. 数学背景

    关键定理(高斯):每个自然数可以表示为 33 个三角形数之和。

    本题要求更紧的界:最多 55 个三角形数,且 nn 可以达到 101810^{18}

    3. 构造策略

    方法一:贪心选择

    1. 从最大的可能的三角形数开始
    2. 每次选择不超过剩余值的最大三角形数
    3. 重复直到剩余值为 00

    但这种方法不能保证在 55 步内完成。

    方法二:数学构造

    利用恒等式和模性质构造解。

    4. 具体构造算法

    步骤 1:将 nn 表示为 n=8Ta+rn = 8T_a + r 的形式,其中 0r70 \leq r \leq 7

    步骤 2:根据 rr 的值选择三角形数组合:

    • 如果 r=0r = 0n=T4a+1+T4a+1+T4a+T4an = T_{4a+1} + T_{4a+1} + T_{4a} + T_{4a}
    • 如果 r=1r = 1n=T4a+2+T4a+T4a+T4a+T1n = T_{4a+2} + T_{4a} + T_{4a} + T_{4a} + T_1
    • 如果 r=2r = 2n=T4a+1+T4a+1+T4a+1+T4a+T1n = T_{4a+1} + T_{4a+1} + T_{4a+1} + T_{4a} + T_1
    • 如果 r=3r = 3n=T4a+2+T4a+1+T4a+T4a+T1n = T_{4a+2} + T_{4a+1} + T_{4a} + T_{4a} + T_1
    • 如果 r=4r = 4n=T4a+2+T4a+1+T4a+1+T4a+T1n = T_{4a+2} + T_{4a+1} + T_{4a+1} + T_{4a} + T_1
    • 如果 r=5r = 5n=T4a+2+T4a+2+T4a+T4a+T1n = T_{4a+2} + T_{4a+2} + T_{4a} + T_{4a} + T_1
    • 如果 r=6r = 6:$n = T_{4a+2} + T_{4a+1} + T_{4a+1} + T_{4a+1} + T_1$
    • 如果 r=7r = 7n=T4a+2+T4a+2+T4a+1+T4a+T1n = T_{4a+2} + T_{4a+2} + T_{4a+1} + T_{4a} + T_1

    5. 验证恒等式

    r=0r = 0 为例:

    $$T_{4a+1} + T_{4a+1} + T_{4a} + T_{4a} = 2 \cdot \frac{(4a+1)(4a+2)}{2} + 2 \cdot \frac{4a(4a+1)}{2} = (4a+1)(4a+2) + 4a(4a+1) = 8a(4a+1) + (4a+1) = 8T_a $$

    其他情况类似验证。

    算法实现

    复杂度分析

    • 时间复杂度O(1)O(1)
    • 空间复杂度O(1)O(1)

    实现步骤

    1. 读入 nn
    2. 计算 a=n8a = \lfloor \frac{n}{8} \rfloorr=nmod8r = n \bmod 8
    3. 根据 rr 的值输出对应的 55 个三角形数
    4. 注意:某些情况下可能只需要 44 个数(如 r=0r=0
    • 1

    信息

    ID
    4717
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者