不常见的计算技巧
阶梯数
如果要求形如 \((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\)。

浙公网安备 33010602011771号