不常见的计算技巧

阶梯数

如果要求形如 \((1 + p + p^2 + \ldots + p^{k})\) 这样的数,有一种快速的方法,类似递推,即我们不断迭代 \(t = t * (t + 1)\) 迭代 k 次,就能得到这个数。

原理是,我们每次的 +1 会引出来一个新的项,而前面的不断乘 t,总体上,数的的次方会呈阶梯式,具体如下:

\[\begin{aligned} t &= 1 \\ t &= t + 1\\ t &= t^2 + t + 1 \\ &\dots \\ t &= t^k + t^{k - 1} + \dots + t^2 + t + 1 \end{aligned} \]

迭代次数为 \(k\) 次,时间复杂度为 \(O(n)\)

当然,你也可以直接上等比数列求和,这样只需要 \(\operatorname O(\log n)\) 的时间。

满足勾股关系,就一定满足三边关系

因为勾股关系可以构建出直角三角形

神奇的补全?

如果目前 \(x\) 通过加一个数 \(a\) 达到 \(k\) 的倍数,那么有 \(a = (-x \bmod k)\) 也就是有 \(qk =x + (-x mod k)\) 这个的正确性是显然的,可以自行思考。也就是补到 \(qk\) 最近 \(k\)

posted @ 2026-08-28 23:56  blind5883  阅读(7)  评论(0)    收藏  举报