• Karatsuba 乘法

    Karatsuba 乘法是一种快速的乘法算法,它是由 Anatolii Alexeevitch Karatsuba 在 1960 年发现,并且在 1962 年公开发表的算法。 传统的高精度乘法复杂度会达到 $n^2$,而 Karatsuba 乘法则是基于分治策略,复杂度是 $3n^{\log_23}$,近似值大约为 $3n^{1.585}$。

  • 制作网页版幻灯片——impress.js

    impress.js 是一个基于 CSS3 运行在现代浏览器上的表现框架,它的灵感来源于 prezi.com。如果你有一点 web 的基础,你可以用它来制作幻灯片,而且效果十分绚丽,你可以轻松地做出旋转、划动、缩放等特效。因为它是遵循 MIT 和 GPLv2+ 协议的,所以你可以对 impress.js 的源码做任意修改。而且,还有在线的所见即所得的编辑网站 Dyapos 以及 Strut

    这里有 impress.js 的示例,打开后你将会看到这样的画面

    等不及了?那么,我们现在就来制作一个 impress.js 幻灯片

  • 扩展欧几里得算法与中国剩余定理

    在《孙子算经》中有这样一个问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

    这个问题说的是,有一件物品,我们不知道它的数量。但是,如果三个三个数,最后会剩下两个;如果五个五个数,最后会剩下三个;如果七个七个数,最后会剩下两个。问这个东西的数量是多少?

    实际上,这个问题在现在我们可以将其转化为一个同余方程组:

    [\left { \begin{aligned} x \equiv 2 \pmod 3 \ x \equiv 3 \pmod 5 \ x \equiv 2 \pmod 7 \end{aligned} \right.]

    中国剩余定理告诉了我们像这样的同余方程组的解。这个定理又称为孙子定理,通常被简写成CRT(Chinese Remainder Theorem)。

    这篇文章将会从欧几里得算法开始讲起,之后过渡到扩展欧几里得算法解线性方程,最后介绍中国剩余定理。

  • 幂和

    我们会介绍计算 $k$ 次幂和的递推公式。

  • 「数论」线性求所有逆元的方法

    前几天在看 lucas 定理的时候发现要求 $1,~2,\cdots,p-1\bmod p$ 的逆元,然后就看到了一个 $\Theta(n)$ 的做法。

  • FFT用到的各种素数

    这几天在写 FFT,由于是在模意义下的,需要各种素数,然后就打了个表方便以后查。 如果 $r \cdot 2^k + 1$ 是个素数,那么在$\bmod r \cdot 2^k + 1$意义下,可以处理 $2^k$ 以内规模的数据,

  • BZOJ-3157. 国王奇遇记

    题目大意是要求下面这个式子
    \(\sum_{i=1}^n m^i \cdot i^m\)

    这个题目有三个版本:

    这篇文章介绍 $\mathcal O(m^2)$ 和 $\mathcal O(m)$ 两种做法。