zoukankan      html  css  js  c++  java
  • 1^b+2^b+3^b+...+n^b数列

    首先,这是我自己推出来的,O(n^2),常数巨大。所以无能为力优化!所以求此数列的公式!求优化!!!

    主要思想:要算b次的,那么就要先算b+1次的。

    首先,我用F(i, j)表示杨辉三角第i层第j个,即(a+b)^(i-1),i>1的展开各项系数

    第1层:1

    第2层:1 1          ((a+b)^1)

    第3层:1 2 1       ((a+b)^2)

    第4层:1 3 3 1    ((a+b)^3)

    ....

    upd:原来自己2写的都是什么东西,后期想改成latex也不改了,就这样了。现在我来推:

    用高一次的推低次的:

    $$要求:sum_{i=1}^{n} i^b$$

    $$那么根据:sum_{i=1}^{n} i^{b+1} + (n+1)^{b+1} = sum_{i=1}^{n+1} i^{b+1} = sum_{i=0}^{n} (i+1)^{b+1}$$

    然后展开右式后发现能高此项的能约掉,所以就能得到低次项的。

    那么,(n+1)^b展开就是

    $$F(b+1,1) imes n^b + F(b+1,2) imes n^(b-1) + ... + F(b+1,b) imes n^1 + F(b+1,b+1) imes n^0$$

    那么

    $$(1+1)^b + (2+1)^b + (3+1)^b + ... + (n+1)^b =$$

    $$(F(b+1,1) imes 1^b + F(b+1,1) imes 2^b + F(b+1,1) imes 3^b + ... + F(b+1,1) imes n^b) +$$

    $$(F(b+1,2) imes 1^(b-1) + F(b+1,2) imes 2^(b-1)  + F(b+1,2) imes 3^(b-1)  + ... + F(b+1,2) imes n^(b-1) ) +$$

    ...

    $$(F(b+1,b) imes 1^1 + F(b+1,b) imes 2^1 + F(b+1,b) imes 3^1 + ... + F(b+1,b) imes n^1) +$$

    $$(F(b+1,b+1) imes 1^0 + F(b+1,b+1) imes 2^0 + F(b+1,b+1) imes 3^0 + ... + F(b+1,b+1) imes n^0) = $$

    $$F(b+1,1) imes (1^b+2^b+...+n^b) + F(b+1,2) imes (1^(b-1)+2^(b-1)+...+n^(b-1)) + ... + F(b+1,b) imes (1^1+2^1+...+n^1) + F(b+1,b+1) imes (1^0+2^0+...+n^0) $$

    因为F(b+1,1)=F(b+1,b+1)=1

    所以 化简得到

    $$(1+1)^b + (2+1)^b + (3+1)^b + ... + (n+1)^b =

    (1^b+2^b+...+n^b) + F(b+1,2) imes (1^(b-1)+2^(b-1)+...+n^(b-1)) + ... + F(b+1,b) imes (1^1+2^1+...+n^1) + n$$

    好了,我们发现了1^(b-1)+2^(b-1)+...+n^(b-1)出现了,那么就可以算了。将(1^b+2^b+...+n^b) 移左式,得

    (n+1)^b - 1 - n = F(b+1,2) imes (1^(b-1)+2^(b-1)+...+n^(b-1)) + ... + F(b+1,b) imes (1^1+2^1+...+n^1)

    好了,继续化简,得

    1^(b-1)+2^(b-1)+...+n^(b-1) = ((n+1)^b - (n+1) - F(b+1,3) imes (1^(b-2)+2^(b-2)+...+n^(b-2)) - ... - F(b+1,b) imes (1+2+...+n)) / F(b+1,2)

    因为F(b+1,2) = b,所以,最终得

    1^(b-1)+2^(b-1)+...+n^(b-1) = ((n+1)^b - (n+1) - F(b+1,3) imes (1^(b-2)+2^(b-2)+...+n^(b-2)) - ... - F(b+1,b) imes (1+2+...+n)) / b

    我们令 x = b-1,那么b = x+1,得

    1^x+2^x+...+n^x = ((n+1)^(x+1) - (n+1) - F(x+2,3) imes (1^(x-1)+2^(x-1)+...+n^(x-1)) - ... - F(x+2,x+1) imes (1+2+...+n)) / (x+1)

    好了,我们现在用S(x)表示1^x+2^x+...+n^x

    得到公式:

    S(1) = 1^1+2^1+...+n^1 = n(n+1) / 2

    S(x) = ((n+1)^(x+1) - (n+1) - F(x+2,3) imes S(x-1) - F(x+2,4) imes S(x-2) - ... - F(x+2,x+1) imes S(1)) / (x+1)

    (不证明了,自己用归纳证一下)

    (另,求优化!有没有O(1)算法,那个(n+1)^(x+1)会耗很多时间= =)

    好了。我们将x=2带进去得到1^2+2^2+...+n^2

    得到

    S(2) = ((n+1)^3- (n+1) - F(4,3) imes S(1)) / 3 = ((n+1)^3- (n+1) - 3 imes (n(n+1) / 2)) / 3 = (n^3 + 3 imes n^2 + 2 imes n - 3 imes n(n+1)/2) / 3 = n imes (2 imes n^2+3n+1) / 6 =n imes (n+1) imes (2 imes n+1) / 6

    所以

    S(2) = n imes (n+1) imes (2 imes n+1) / 6

    即 1^2+2^2+...+n^2 = n imes (n+1) imes (2 imes n+1) / 6

    (求大神们指点)

  • 相关阅读:
    服务部署 RPC vs RESTful
    模拟浏览器之从 Selenium 到splinter
    windows程序设计 vs2012 新建win32项目
    ubuntu python 安装numpy,scipy.pandas.....
    vmvare 将主机的文件复制到虚拟机系统中 安装WMware tools
    ubuntu 修改root密码
    python 定义类 简单使用
    python 定义函数 两个文件调用函数
    python 定义函数 调用函数
    python windows 安装gensim
  • 原文地址:https://www.cnblogs.com/iwtwiioi/p/3521817.html
Copyright © 2011-2022 走看看