首项为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;
}

首项为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次项与1次项的方法)相关推荐

  1. Linux等比数列脚本求和,POJ 1845 (约数和+二分等比数列求和)

    题目大意:A^B的所有约数和,mod 9901. 解题思路: ①整数唯一分解定理: 一个整数A一定能被分成:A=(P1^K1)*(P2^K2)*(P3^K3).....*(Pn^Kn)的形式.其中Pn ...

  2. 一个首项大于0的等差数列的前四项的和为26,前四项的积为880,求此数列。

    一个首项大于0的等差数列的前四项的和为26,前四项的积为880,求此数列. **输出格式要求:"%d," "......\n" (只输出前21个数,其他为... ...

  3. 等比数列等差数列求和

    参考:https://zh.wikipedia.org/wiki/等比数列 参考:https://zh.wikipedia.org/wiki/等差数列 参考:https://baike.baidu.c ...

  4. 费马小定理与等比数列的求和(MOD 质数)

    费马小定理:任意整数a, a^p≡a (mod p),p是质数. 定理:1.对a/b≡a*x (mod n),则称x 为b的乘法逆元,记为b^-1. 2.当模数p为质数,且b与p互质(即b不为p的倍数 ...

  5. hdu1852 Beijing 2008(约数之和 : 无逆元除法取模 | 等比数列分治求和)

    题意: 给你n,k,M=2008n%k,求2008M%k给你n,k,M = 2008^{n}\%k,求2008^{M}\%k给你n,k,M=2008n%k,求2008M%k 思路: 唯一分解定理分解质 ...

  6. 【问题解决】【excel】求平均值、求和 结果为0 ->将excel中文本型数据转化为数值型数据

    问题:求平均值.求和 结果为0 原因:表格中数据是文本型数据,而不是数值型数据,文本型数据平均值求和都为0 解决办法:将excel中文本型数据转化为数值型数据 选中文本型数值区域,发现在选中区域的左上 ...

  7. 1,2,3,5,8,13用C语言输出前20项,c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和...

    C语言源程序如下: #include int main() { int array[100]={1,1};//斐波那契数列前两个元素均为0 int i=0;//循环变量 int n=20;//数列需要 ...

  8. 编程求斐波那契数列的第n项和前n项之和。

    编写程序求斐波那契数列的第n项和前n项之和.斐波那契数列是形如 0, 1, 1, 2, 3, 5, 8, 13, ... 其通项为: F[0]=0 F[1]=1 F[n]=F[n-1]+F[n-2] ...

  9. c语言求斐波那契数列n项以及前n项和

    斐波那契数列的定义 f(n)=f(n-1)+f(n-2);     (n>1) n=0;  f(0)=0; n=1;   f(1)=1 自定义函数 递归写法 fbi()此函数求x项的斐波那契数 ...

最新文章

  1. python2.7和3.5相互兼容吗_以与Python 2.7和Python 3.5兼容的方式使用abc.ABCMeta
  2. neo4j 机器学习_知识图谱实战系列四:neo4j的介绍和使用
  3. 以Python为基础的REST(JSON为交换数据)接口的测试框架设计(一)
  4. 回lifesinger 的国庆题目
  5. GitHub 标星 8w!这个开源面试总结屌爆了!
  6. Hibernate 学习的书-夏昕(1)
  7. 【IDE】【WebStorm】html排版设置head和body缩进
  8. HTML特效代码大全
  9. 3分钟搭建一个网站?腾讯云Serverless开发体验
  10. python 64式: 第24式、python项目国际化翻译实战
  11. getch(),getche()和getchar()使用区别
  12. 数字信号处理专业术语翻译
  13. (一)改掉这些坏习惯,还怕写不出健壮的代码?
  14. oracle lag over 用法,lag()使用方法
  15. 22岁90后白羊座罗生和勒索病毒的背后故事
  16. 打捞“世越号” 我国“钢梁托底”技术显实力
  17. 如何设计判定条件多的流程图?
  18. html段落格式设置
  19. 医院局域网设计方案计算机,某医院无线网络设计方案
  20. 寒冷的冬日,您不需要一双安全防寒保暖的鞋吗?

热门文章

  1. 行业洞察 | 小米发布人形机器人的AI技术
  2. csdn写博客时图片插入方法
  3. 三国人物结构化数据 - Characters_of_the_Three_Kingdoms
  4. Last login: Wed Aug 24 17:23:14 2016 from wr702n.mshome.net
  5. 王喆:计算广告技术综述与思考
  6. clamav完整查杀linux病毒实战
  7. 送给所有程序员的新年祝福新年愿望
  8. Python 自动化教程(1) 概述,第一篇 Excel自动化首篇
  9. 首席新媒体黎想教程:如何从零开始策划微博运营?
  10. Unity3D添加使用系统中的字体