正题
比赛的时候不懂一个组合数的公式暴毙。我太菜了
实际上你可以发现,第一行的公差是1,第二行的公差是a+b,第i行的公差是,这是为什么呢?
可以发现从每一行的公差是上一行的(a+b)倍,因为相邻两项之间被*a贡献之间公差为上一层的公差,被*b贡献之间公差为上一层的公差,c可以抵消掉,所以公差就是(a+b)倍。
那么就可以得到递推公式。
这个东西就可以直接用矩阵快速幂做,主要就是维护一个5*5的矩阵(也许您不用?
但是,我要将我在比赛的方法推广!
首先可以看作是把每行拆开,除了第一行之外全部都是c,c的贡献是很好算的,向下走一步*a向左下走一步乘b。
那么就有:
再来康康第一行怎么往下走:
啊这个东西就是我不会化简的:
惊不惊喜,意不意外。
实际上这里用到了一个我昨晚发现的公式:
具体证明很简单,可以暴力展开,也可以讨论一下选球,笔者不多赘述。
然后就是把i-1换成i,合并一下发现就是:,跟题解里面不知道怎么麻烦推出来的式子一模一样。
后面就没什么好说的了,跟题解一样,c的贡献可以直接二分递归+龟速乘+快速幂。(没有代码,数学题