货币系统另解生成函数

文章目录

题目

在这里插入图片描述
T ≤ 20 , n ≤ 100 , a i ≤ 25000 T\le20,n\le100,a_i\le25000 T20,n100,ai25000

思路

F ( x ) = ∏ i = 1 n G i ( x ) F(x)=\prod_{i=1}^nG_i(x) F(x)=i=1nGi(x)
G i ( x ) = ∑ j = 0 + ∞ x j v i G_i(x)=\sum_{j=0}^{+\infty}x^{jv_i} Gi(x)=j=0+xjvi
直接 F F T FFT FFT T T T
然后闻所未闻的操作(虽然多项式这样干过)
F ( x ) = e x p ∑ i = 1 n l n ( G i ( x ) ) F(x)=exp\sum_{i=1}^nln(G_i(x)) F(x)=expi=1nln(Gi(x))
考虑 l n ( G i ( x ) ) ln(G_i(x)) ln(Gi(x)) 化简
l n ( G i ( x ) ) = l n ( 1 1 − x v i ) = − l n ( 1 − x v i ) ln(G_i(x))=ln(\frac{1}{1-x^{v_i}})=-ln(1-x^{v_i}) ln(Gi(x))=ln(1xvi1)=ln(1xvi)
然后什么求导后再积分回来
− l n ( 1 − x v i ) = − ∫ − v i x v i − 1 1 − x v i = − ∫ − v i x v i − 1 ∑ j = 0 + ∞ x j v i = ∫ v i ∑ j = 0 + ∞ x ( j + 1 ) v i − 1 = v i ∑ j = 0 + ∞ x ( j + 1 ) v i ( j + 1 ) v i = ∑ j = 0 + ∞ x ( j + 1 ) v i j + 1 = ∑ j = 1 + ∞ x j v i j -ln(1-x^{v_i})=-\int\frac{-v_ix^{v_i-1}}{1-x^{v_i}}=\\-\int-v_ix^{v_i-1}\sum_{j=0}^{+\infty}x^{jv_i}=\int v_i\sum_{j=0}^{+\infty}x^{(j+1)v_i-1}=v_i\sum_{j=0}^{+\infty}\frac{x^{(j+1)v_i}}{(j+1)v_i}\\=\sum_{j=0}^{+\infty}\frac{x^{(j+1)v_i}}{j+1}=\sum_{j=1}^{+\infty}\frac{x^{jv_i}}{j} ln(1xvi)=1xvivixvi1=vixvi1j=0+xjvi=vij=0+x(j+1)vi1=vij=0+(j+1)vix(j+1)vi=j=0+j+1x(j+1)vi=j=1+jxjvi

那么
F ( x ) = e x p ∑ i = 1 n ∑ j = 1 + ∞ x j v i j F(x)=exp\sum_{i=1}^n\sum_{j=1}^{+\infty}\frac{x^{jv_i}}{j} F(x)=expi=1nj=1+jxjvi
调和级数+exp O ( m l o g m ) O(mlogm) O(mlogm)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值