zoukankan      html  css  js  c++  java
  • 求解所有的变量的所有次幂的每一种的和

    标题很丑。。。

    问题描述

    (n) 个变量 (a_n),求所有的

    [s_j=sum_{i=1}^{n}a_i^j, j in [0,m] ]

    解决

    (O(n*m)) 太暴力了

    一个比较好的方法

    [F(x)=Pi_{i=1}^{n}(a_ix+1) ]

    [Ln(F(x))=sum_{i=1}^{n}Ln(a_ix + 1) ]

    考虑这个 (Ln(a_ix+1)) 是个什么

    [Ln'(a_ix+1)=frac{a_i}{a_ix+1}=sum_{j=0}(-1)^ja_i^{j+1}x^j ]

    等比数列求和可证
    那么就有两种方法
    方法一

    [Ln'(F(x))=sum_{i=1}^{n}Ln'(a_ix + 1)=sum_{i=1}^{n}sum_{j=0}(-1)^ja_i^{j+1}x^j ]

    就是

    [sum_{j=0}(-1)^j(sum_{i=1}^{n}a_i^{j+1})x_j ]

    那么分治 (FFT) 然后求 (Ln) 再 求导即可
    方法二

    [Ln'(a_ix+1)=frac{a_i}{a_ix+1}=sum_{j=0}(-1)^ja_i^{j+1}x^j ]

    把它积分一下

    [Ln(a_ix+1)=sum_{j=1}frac{(-1)^{j-1}a_i^{j}}{j}x^{j} ]

    那么

    [Ln(F(x))=sum_{i=1}^{n}sum_{j=1}frac{(-1)^{j-1}a_i^{j}}{j}x^{j} ]

    [Ln(F(x))=sum_{j=1}frac{(-1)^{j-1}}{j}(sum_{i=1}^{n}a_i^j)x^{j} ]

    那么分治 (FFT) 然后求 (Ln) 即可

    还有一只 (log) 的做法,见 (zzq)博客

  • 相关阅读:
    Swift 扩展
    Swift 类型转换
    Swift 自动引用计数(ARC)
    Swift 可选链
    Swift 析构过程
    Swift 构造过程
    Swift 继承
    Swift 下标脚本
    Swift 方法
    Swift 属性
  • 原文地址:https://www.cnblogs.com/cjoieryl/p/9172520.html
Copyright © 2011-2022 走看看