zoukankan      html  css  js  c++  java
  • [Luogu] P4948 数列求和

    \(Link\)

    Description​

    给定\(n, a, k\),求\(\sum\limits_{i=1}^ni^ka^i\pmod{1e9+7}\)

    Solution​

    学习了一种新的推式子方法。

    我们令\(f(k)=\sum\limits_{i=1}^ni^ka^i\)

    \(a>1\)时,\(f(k)=\sum\limits_{i=1}^ni^ka^i\)

    \(=\sum\limits_{i=1}^n(i+1)^ka^{i+1}-(n+1)^ka^{n+1}+a\)

    \(=\sum\limits_{i=1}^n\sum\limits_{j=0}^ki^j\dbinom{k}{j}a^{i+1}-(n+1)^ka^{n+1}+a\)

    \(=a\sum\limits_{j=0}^k\dbinom{k}{j}f(j)-(n+1)^ka^{n+1}+a\)

    整理可得\(f(k)=\dfrac{(n+1)^ka^{n+1}-a-a\sum\limits_{j=0}^{k-1}\dbinom{k}{j}f(j)}{a-1}\)

    我们容易求出\(f(0)=\sum\limits_{i=1}^na^i=\dfrac{a(a^n-1)}{a-1}\)(等比数列求和)。\(O(k^2)\)递推即可。

    \(a=1\)时,\(f(k)=\sum\limits_{i=1}^ni^k\)

    \(=\sum\limits_{i=1}^n(i+1)^k-(n+1)^k+1\)

    \(=\sum\limits_{i=1}^n\sum\limits_{j=0}^ki^j\dbinom{k}{j}-(n+1)^k+1\)

    \(=\sum\limits_{j=0}^k\dbinom{k}{j}f(j)-(n+1)^k+1\)

    整理一下:\((n+1)^k-1=\sum\limits_{j=0}^{k-1}\dbinom{k}{j}f(j)+\dbinom{k}{k}f(k)-f(k)=\sum\limits_{j=0}^{k-2}\dbinom{k}{j}f(j)+\dbinom{k}{k-1}f(k-1)\)

    \(k=k+1\)\(f(k)\dbinom{k+1}{k}=(n+1)^{k+1}-1-\sum\limits_{J=0}^{k-1}\dbinom{k+1}{j}f(j)\)

    整理得\(f(k)=\dfrac{(n+1)^{k+1}-1-\sum\limits_{j=0}^{k-1}\dbinom{k+1}{j}f(j)}{k+1}\)

    我们容易求出\(f(0)=n\)\(O(k^2)\)递推即可。

    Tips

    快速幂运算之前,先要把底数和指数取个模在运算,否则很有可能爆\(long\ long\)!(调了我一个多小时)

  • 相关阅读:
    C#中Post和Get提交
    C#实现动态页面静态化
    瀑布流的实现
    jQuery常用方法验证
    eclipse配置PHP开发环境
    数据结构学习
    机器学习实战
    Leetcode_StringToInteger
    网络学习
    leetcode_前期心得
  • 原文地址:https://www.cnblogs.com/andysj/p/13829908.html
Copyright © 2011-2022 走看看