• 你有 n 个不同的小球,现在你想用这些小球拼成 k 个环,一共有多少种拼法?
  • 你有 n 个不同的小球,现在你想将这些小球分成 k 个非空的集合,一共有多少种分法?

这两个问题就是最典型的斯特林数(Stirling Number)了。

More...




今天打开我博客突然再次出现了 database error 的信息……显然 MySQL 服务再次崩坏了。上次崩坏已经尝试过跳大系统栈的方法,这次的崩坏仿佛是另一种错误(吐血……)。

More...



斐波那契(Fibonacci)数列的递推式是:$F_{i}=F_{i-1}+F_{i-2}$ 。根据这个递推式,我们可以在 $\Theta (n)$ 复杂度内求出第 n 项,但是当 n 很大时,这种方法就显得很慢。其实利用矩阵快速幂,我们可以在 $\Theta (\log_2 n)$ 内求出第 n 项。

More...


在c++中,vector 是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector 在C++ 标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

More...


之前我们已经知道欧拉函数 $\varphi(n)$ 的计算公式:

\displaystyle \varphi (n)=n \ast \prod_{i-1}^{r} (\frac {p_i-1} {p_i})

我们还知道它的两条性质:
如果$\varphi(x)$中的x是质数 p 的 k 次幂,那么 $\displaystyle \varphi (x)=\varphi (p^k)=(p-1)p^{k-1}$ ;
欧拉函数是积性函数,如果 x 和 y 互质,则 $\varphi(xy)=\varphi(x) \varphi(y)=(x-1)(y-1)$ 。

今天我们要证明上述性质,再介绍几条新的性质。

More...


C++里有普通的 32 位整数类型 int 和 64 位整数类型 long long,但是如果我们要存一个128位的整数,前两个似乎就无能为力了。这时候我们就要用到 __int128这种类型了。

More...