【51nod 1538】 一道难题 - n阶常系数线性递推

  题意:给定 a ,求

(ni=1aibi)=m(ni=1bi)!ni=1(bi!)

   m1018 , ai[1,23333],bi0

【奇怪的背景】
  不知道多少天前。。。
  Q神:hgr你有 nlognlogk 求 n 阶线性递推第 k 项的板子吗
  我:好像没有啊。。。
  Q神:这个辣鸡51nod出了个裸题,写不动了
  于是看了波题。。。然后一脸懵逼???这怎么就线性递推了???
  然后这题就鸽了

  最近似乎比较有空。。。冷静一下之后推了一波这个题发现。。。怎么出个裸题啊
  这个式子看起来比较吓人。。其实是在搞笑。。。
  设 Fm=(ni=1aibi)=m(ni=1bi)!ni=1(bi!)
  我们稍微加上个东西然后一波xjb变换
  

Fm=(ni=1aibi)=m(ni=1bi)!ni=1(bi!)nj=1bj[bj>0]ni=1bi  =j=1n(ni=1aibi)=m[bj>0](ni=1bi1)!ni=1(bi!)bj  =j=1n(ni=1aibi)=m[bj>0](ni=1bi1)!(bj1)!ij(bi!)  =j=1n(ni=1aibi)=m[bj10](ni=1bi1)!(bj1)!ij(bi!)  =j=1n(ni=1aibi)=maj[bj0](ni=1bi)!ni=1(bi!)

  因为 bi0 ,所以直接有
  
Fm=i=1nFmai

  于是直接套 n 阶常系数齐次线性递推就行了。
  具体如何实现的话。。。叉姐论文和picks老师的博客有讲。。。这东西要完整地写出来不太好写。。。式子太多了= =
  而且这玩意写起代码来也是蛋疼的一b。。。
  
  有个东西我还不太清楚。。。比如现在递推式是 fm=ni=1cifmi 。。。然后要先求初值 f0...fn 对吧。。。然而似乎除了直接用生成函数搞个 F(z)=11C(z) 以外我没有想到别的复杂度更好的办法。。。(虽然这里多项式求逆和分治FFT速度好像没啥区别了hhhhh)
  然而这里一点都不瓶颈的样子→_→
  
  代码太丑了不贴了 其实是TLE到现在弃疗了
   UPD:终于过了。。。辣鸡数据错了卡我这么久。。。有两个点的a_1是会大于23333的,要把他忽略掉。。。GTMD。。。

你可能感兴趣的:(数学题,递推,FFT,生成函数,多项式)