今天的真的没什么好写的,不是我想水博客,而是真的没什么好写的。
没什么好写的也要写点。就说下避坑的点吧。
首先,由于是计数专题,那就避不开组合数。而组合数就避不开逆元。逆元的求法多种多样,但线性求逆元是最简单的。其有一个递推式 inv[i]=inv[mod%i](mod-mod/i)%mod
。据此可以在 O(n) 的时间复杂度内求出 1 到 n的逆元。代码基本只需一两行,而且查询是 O(1) 的。据此也可以由式子 inv[i]=inv[i]inv[i-1]%mod
来得到阶乘逆元。能在组合数计算中很方便地调用。甚至可以通过简单处理得到一些特殊的数的逆元,比如 i^2 的逆元。
其次,数组的初始化什么的有时在大多数样例下没差,但可能有特殊数据能卡你,比如说 C(i,i),如果没对 inv 赋对初值,就会出问题。由于不可知数据到底有没有点会卡,所以最好直接将 inv_0,inv_1 都赋上 1。
