[Luogu2000] 拯救世界 [生成函数&ruby]

[ L i n k \frak{Link} Link]


f ( x ) = [ k ∣ x ] f(x)=[k|x] f(x)=[kx] 的生成函数 ∑ n = 0 ∞ x k n = 1 1 − x k \sum\limits_{n=0}^\infty x^{kn}= \frac{1}{1-x^k} n=0xkn=1xk1
f ( x ) = [ x ≤ k ] f(x)=[x\le k] f(x)=[xk] 的生成函数 ∑ n = 0 k x n = 1 − x k + 1 1 − x \sum\limits_{n=0}^{k} x^n=\frac{1-x^{k+1}}{1-x} n=0kxn=1x1xk+1
十个生成函数分别是
∣ 6 |6 6
10 10 10
6 6 6
∣ 4 |4 4
8 8 8
∣ 2 |2 2
2 2 2
∣ 8 |8 8
∣ 10 |10 10
4 4 4
全部乘起来得到 1 ( 1 − x ) 5 \cfrac{1}{(1-x)^5} (1x)51
为什么是全部乘起来?两个阵是分别摆的,而且都要摆,
实际上相当于十种石头摆一个阵,它们的数量分别满足条件,组合一下。
所以全部乘起来。


由二项式定理 ( 1 + x ) n = ∑ r = 0 n ( n − r + 1 ) ( n − r + 2 ) ⋯ ( n − 1 ) n r ! ⋅ x r (1+x)^{n}=\displaystyle\sum\limits_{r=0}^n\frac{(n-r+1)(n-r+2)\cdots(n-1)n}{r!}\cdot x^r (1+x)n=r=0nr!(nr+1)(nr+2)(n1)nxr n ∈ N n\in\N nN
推广,因为生成函数是形式幂级数我们可以利用
1 ( 1 + x ) n = ∑ r = 0 ∞ ( − n − r + 1 ) ( − n − r + 2 ) ⋯ ( − n − 1 ) ( − n ) r ! ⋅ x r = ∑ r = 0 ∞ n ( n + 1 ) ⋯ ( n + r − 2 ) ( n + r − 1 ) r ! ⋅ x r = ∑ r = 0 ∞ ( n + r − 1 ) ! r ! ( n − 1 ) ! ⋅ x r = ∑ r = 0 ∞ ( n + r − 1 r ) x r \begin{array}{rcl} \cfrac{1}{(1+x)^n}&=&\displaystyle\sum\limits_{r=0}^\infty\frac{(-n-r+1)(-n-r+2)\cdots(-n-1)(-n)}{r!}\cdot x^r\\ &=&\displaystyle\sum\limits_{r=0}^\infty\frac{n(n+1)\cdots(n+r-2)(n+r-1)}{r!}\cdot x^r\\ &=&\displaystyle\sum\limits_{r=0}^\infty\frac{(n+r-1)!}{r!(n-1)!}\cdot x^r\\ &=&\displaystyle\sum\limits_{r=0}^\infty\binom{n+r-1}{r}x^r \end{array} (1+x)n1====r=0r!(nr+1)(nr+2)(n1)(n)xrr=0r!n(n+1)(n+r2)(n+r1)xrr=0r!(n1)!(n+r1)!xrr=0(rn+r1)xr


那么窝萌可以把 1 ( 1 − x ) 5 \cfrac{1}{(1-x)^5} (1x)51 搞开,
n n n 项系数 ( n + 4 n ) = ( n + 1 ) ( n + 2 ) ( n + 3 ) ( n + 4 ) / 24 \binom{n+4}{n}=(n+1)(n+2)(n+3)(n+4)/24 (nn+4)=(n+1)(n+2)(n+3)(n+4)/24

(PS:为什么生成函数要是形式幂级数?
对生成函数做运算,得到的结果我们当然不会去取发散的部分来还原
那干脆就默认全程收敛,不去具体讨论敛散性)


沙雕出题人卡时间和精度
用 ruby 可以水,不然得写 NTT 或者 MTT

震撼了我的彩虹小马


n=gets.to_i
puts (n+1)*(n+2)*(n+3)*(n+4)/24
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值