等比数列二分求和(首项为0次项与1次项的方法)
来源:互联网 发布:水量伺服器 知乎 编辑:程序博客网 时间:2024/06/14 14:14
首项为1次项的,前面的博客中已经有过讲解:http://blog.csdn.net/rain722/article/details/71034438
附上代码:
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int M = 1000000007;typedef long long LL;LL power(LL a,LL b){ LL ans = 1; a %= M; while(b) { if(b & 1) { ans = ans * a % M; b--; } b >>= 1; a = a * a % M; } return ans;}LL sum(LL a,LL n){ if(n == 1) return a; LL t = sum(a,n/2); if(n & 1) { LL cur = power(a,n/2+1); t = (t + t * cur % M) % M; t = (t + cur) % M; } else { LL cur = power(a,n/2); t = (t + t * cur % M) % M; } return t;}int main(){ LL a,n; while(cin>>a>>n) cout<<sum(a,n)<<endl; return 0;}
首先注明n为不包含0次项的项数,比如a^0, a^1, a^2, a^3, a^4这个等比数列的项数需要传入的参数为n = 4
S(n)表示包括0次项即1但不计入项数内的前n项和,比如S(4) = a^0 + a^1 + a^2 + a^3 + a^4
n为奇数(不包括0次项即1的项为奇数)
S(n) = (1+a^(n/2 + 1)) * S(n/2)
n为偶数(不包括1的项)
S(n) = (1+a^(n/2)) * S(n/2 - 1) + a^n
代码:需要注意的是传入的参数n为不包括0次项的项数
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int M = 1000000007;typedef long long LL;LL power(LL a,LL b){ LL ans = 1; a %= M; while(b) { if(b & 1) { ans = ans * a % M; b--; } b >>= 1; a = a * a % M; } return ans;}LL sum(LL a,LL n){ if(n == 0) return 1; LL t = sum(a,(n-1)/2); if(n & 1) { LL cur = power(a,n/2+1); t = (t + t * cur % M) % M; } else { LL cur = power(a,n/2); t = (t + t * cur % M) % M; t = (t + power(a,n)) % M; } return t;}int main(){ LL a,n; while(cin>>a>>n) cout<<sum(a,n)<<endl; return 0;}
0 0
- 等比数列二分求和(首项为0次项与1次项的方法)
- 等差数列/等比数列通项公式与求和公式
- POJ3233 矩阵的N次幂求和 二分
- 等比数列二分求和
- 等比数列二分求和
- 等比数列二分求和
- 等比数列二分求和
- 等比数列二分求和取模
- POJ Sumdiv (数论+二分等比数列求和)
- 快速矩阵幂+二分等比数列求和
- 等差、等比数列的求和公式
- 财务会计2----短期投次与应收账项
- 【例题&结论】【分治(等比数列二分求和)】NKOJ 3716 数列求和
- poj3261 (二分+后缀数组)可重叠的至少为k次最长重复字串
- 等比数列的前n项和
- 求等比数列的前n项和
- 等比数列求和:x^0 + x^1 + ... + x^k
- 等比数列求和
- Java面向对象设计模式(三)——单例模式
- 使用Webpack创建vue的tab选项
- 解决iOS第三方SDK与本地静态库之间重复的symbols问题
- 加密算法及概念
- Boost.Interprocess使用手册翻译之六:同步机制(Synchronization mechanisms)
- 等比数列二分求和(首项为0次项与1次项的方法)
- toLowerCase方法
- OSI参考模型中的数据封装及解封装过程
- javascript设计模式之装饰器模式(结构型模式)
- 机器学习-高斯模型
- 如何解决安卓项目报65536错误
- 僵尸进程与孤儿进程
- QQ浏览器9 主页无法修改成功的解决办法
- 103. Binary Tree Zigzag Level Order Traversal | 输出二叉树层次遍历次序