题目大意
给定
A,B,C
,求出
∑a=0A∑b=0B(a+ba)∑x=1min(A−a,B−b,C)(A−a−1x−1)(B−b−1x−1)(C−1x−1)
答案对 109+7 取模。
A×B≤1012,C≤1012
题解
我们把
A,B,C
先减1。
先声明一个重要的公式:
∑i=0n(ix)(n−iy)=(n+1x+y+1)
具体的证明可以通过生成函数 1(1−x)k 的乘积来证。
接下来就可以推公式了:
原式=∑x=0up(Cx)∑a=0A(ax)∑b=0B(bx)(A+B−a−bA−a)=∑x=0up(Cx)∑a=0A(ax)(A+B−a+1A−a+x+1)=∑x=0up(Cx)∑a=0A(ax)(A+B−a+1B−x)=∑x=0up(Cx)⎛⎝∑a=0A+B+1(ax)(A+B−a+1B−x)−∑a=A+1A+B+1(ax)(A+B−a+1A−a+x+1)⎞⎠=∑x=0up(Cx)((A+B+2B+1)−∑a=0B(a+A+1x)(B−ax−a))=(∑x=0up(Cx)(A+B+2B+1))−(∑x=0up(Cx)∑a=0B(a+A+1x)(B−ax−a))=(∑x=0up(Cx)(A+B+2B+1))−(∑x=0up(Cx)∑i=0x(A+1i)∑b=0B(bx−i)(B−bB−x))=(∑x=0up(Cx)(A+B+2B+1))−(∑x=0up(Cx)∑i=0x(A+1i)(B+1B−i+1))=(∑x=0up(Cx)(A+B+2B+1))−(∑i=0up(A+1i)(B+1B−i+1)∑x=iup(Cx))
因为 A×B≤1012 ,因此 up≤106 ,我们只需要预处理出一个后缀和,然后组合数边扫边算,这道题就可以 O(A×B−−−−−√) 完成了。