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

    (求大神们指点)

  • 相关阅读:
    Python之Sklearn使用教程
    Centos 查看路径下所有文件中是否包含指定字符
    Centos7x 开启6379端口,Centos7x开启端口
    分享几个ip定位api【转】
    @Scheduled(cron = "* * * * * *")
    QueryRunner的使用
    linux redis重置密码、重启
    nginx里的sticky的作用
    windows环境xampp搭建php电商项目/搭建禅道
    hive中解决中文乱码
  • 原文地址:https://www.cnblogs.com/iwtwiioi/p/3521817.html
Copyright © 2011-2022 走看看