「EZEC-1」数列,组合数推导

正题

      Portal

      比赛的时候不懂一个组合数的公式暴毙。我太菜了

      实际上你可以发现,第一行的公差是1,第二行的公差是a+b,第i行的公差是(a+b)^{i-1},这是为什么呢?

      可以发现从每一行的公差是上一行的(a+b)倍,因为相邻两项之间被*a贡献之间公差为上一层的公差,被*b贡献之间公差为上一层的公差,c可以抵消掉,所以公差就是(a+b)倍。

      那么就可以得到递推公式f(i)=(a+b)f(i-1)+b*(a+b)^{i-2}+c

      这个东西就可以直接用矩阵快速幂做,主要就是维护一个5*5的矩阵(也许您不用?

      但是,我要将我在比赛的方法推广!

      首先可以看作是把每行拆开,除了第一行之外全部都是c,c的贡献是很好算的,向下走一步*a向左下走一步乘b。

      那么就有:\sum_{i=0}^{n-2}c\sum_{j=0}^i C_i^ja^jb^{i-j}=c\sum_{i=0}^{n-2}(a+b)^i

      再来康康第一行怎么往下走:\sum_{i=0}^{n-1}(i+1)C_{n-1}^ia^{n-1-i}b^i

      啊这个东西就是我不会化简的:=(a+b)^{n-1}+b\sum_{i=0}^{n-2}(n-1)C_{n-2}^ia^{n-2-i}b^i

      惊不惊喜,意不意外。

      实际上这里用到了一个我昨晚发现的公式:nC_{n-1}^{i-1}=iC_n^i

      具体证明很简单,可以暴力展开,也可以讨论一下选球,笔者不多赘述。

       然后就是把i-1换成i,合并一下发现就是:(a+b)^{n-2}(bn+a),跟题解里面不知道怎么麻烦推出来的式子一模一样。

       后面就没什么好说的了,跟题解一样,c的贡献可以直接二分递归+龟速乘+快速幂。(没有代码,数学题

     

你可能感兴趣的:(「EZEC-1」数列,组合数推导)