和斐波那契一个道理在最后加一个求和即可
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. //using namespace std;
  5. const int maxn=;
  6. const double eps=1e-;
  7. long long modn;
  8. long long n,l,r;
  9. long long b[]={};
  10. struct mat{
  11. long long e[][];
  12. mat(){ memset(e,,sizeof(e)); }
  13. };
  14. mat a;
  15. mat Mul(mat x,mat y){
  16. mat z;
  17. for(int i=;i<=n+;i++){
  18. for(int j=;j<=n+;j++){
  19. for(int k=;k<=n+;k++){
  20. z.e[i][j]+=x.e[i][k]*y.e[k][j];
  21. z.e[i][j]%=modn;
  22. }
  23. }
  24. }
  25. return z;
  26. }
  27. mat Pow(mat x,long long k){
  28. mat z;
  29. for(int i=;i<=n+;i++){
  30. z.e[i][i]=;
  31. }
  32. while(k>){
  33. if(k&){
  34. z=Mul(z,x);
  35. }
  36. x=Mul(x,x);
  37. k/=;
  38. }/*for(int i=1;i<=n;i++){
  39. for(int j=1;j<=n;j++){
  40. std::cout<<z.e[i][j]<<' ';
  41. }
  42. std::cout<<std::endl;
  43. }*/
  44. return z;
  45. }
  46. long long doit(long long x){
  47. if(x<n){
  48. return b[x+];
  49. }
  50. mat z=Pow(a,x-n+);
  51. long long ans=,s=,d=;
  52. for(int i=;i<=n+;i++){
  53. d+=z.e[n][i]*b[i];
  54. s+=z.e[n+][i]*b[i];
  55. d%=modn;s%=modn;
  56. }
  57. ans=(s+d)%modn;
  58. ans%=modn;
  59. return ans;
  60. }
  61. int main(){
  62. scanf("%lld",&n);
  63. n+=;
  64. for(int i=;i<=n;i++){
  65. scanf("%lld",&b[i]);
  66. b[n+]+=b[i];
  67. }
  68. b[n+]-=b[n];
  69. for(int i=n;i>;i--){
  70. scanf("%lld",&a.e[n][i]);
  71. }
  72. long long l,r;
  73. scanf("%lld%lld%lld",&l,&r,&modn);
  74. for(int i=;i<=n;i++){
  75. b[i]%=modn;
  76. a.e[i-][i]=;a.e[n][i]%=modn;
  77. }
  78. a.e[n+][n+]=,a.e[n+][n]=;
  79. /*for(int i=1;i<=n+1;i++){
  80. for(int j=1;j<=n+1;j++){
  81. std::cout<<a.e[i][j]<<' ';
  82. }
  83. std::cout<<std::endl;
  84. }*/
  85. long long ans=(doit(r)-doit(l-)+modn)%modn;
  86. printf("%lld\n",ans);
  87. return ;
  88. }

BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂的更多相关文章

  1. BZOJ 3231: [Sdoi2008]递归数列( 矩阵快速幂 )

    矩阵乘法裸题..差分一下然后用矩阵乘法+快速幂就可以了. ----------------------------------------------------------------------- ...

  2. bzoj 3231 [Sdoi2008]递归数列——矩阵乘法

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3231 矩阵乘法裸题. 1018是10^18.别忘了开long long. #include& ...

  3. bzoj 3231: [Sdoi2008]递归数列【矩阵乘法】

    今天真是莫名石乐志 一眼矩阵乘法,但是这个矩阵的建立还是挺有意思的,就是把sum再开一列,建成大概这样 然后记!得!开!long!long!! #include<iostream> #in ...

  4. nyoj_148_fibonacci数列(二)_矩阵快速幂

    fibonacci数列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 In the Fibonacci integer sequence, F0 = 0, F ...

  5. fibonacci数列(二)_矩阵快速幂

    描述 In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. For exampl ...

  6. POJ3070 斐波那契数列递推 矩阵快速幂模板题

    题目分析: 对于给出的n,求出斐波那契数列第n项的最后4为数,当n很大的时候,普通的递推会超时,这里介绍用矩阵快速幂解决当递推次数很大时的结果,这里矩阵已经给出,直接计算即可 #include< ...

  7. bzoj5118 Fib数列2 二次剩余+矩阵快速幂

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5118 题解 这个题一看就是不可做的样子. 求斐波那契数列的第 \(n\) 项,\(n \leq ...

  8. Tribonacci UVA - 12470 (简单的斐波拉契数列)(矩阵快速幂)

    题意:a1=0;a2=1;a3=2; a(n)=a(n-1)+a(n-2)+a(n-3);  求a(n) 思路:矩阵快速幂 #include<cstdio> #include<cst ...

  9. BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)

    题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...

随机推荐

  1. HDU 1711 Number Sequence (字符串处理 KMP)

    题目链接 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...

  2. python 天气爬虫

    python3 爬取全国天气信息 制作一个天气查询软件,能够查询全国范围内的天气数据. github:https://github.com/1052687889/weatherApp 基于PyQt5编 ...

  3. Tensorflow中使用TFRecords高效读取数据--结合Attention-over-Attention Neural Network for Reading Comprehension

    原文链接:https://arxiv.org/pdf/1607.04423.pdf 本片论文主要讲了Attention Model在完形填空类的阅读理解上的应用. 转载:https://blog.cs ...

  4. linux和windows共享文件,通过samba

    SAMBA共享1.安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没有的话自己安装下,这里介绍下基于RPM包的一种在线安装模式yumyum是一种快速安装模式,它会自 ...

  5. linux用户修改用户shell

    要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false # usermod -s /usr/sbin/nologin username 或者 # use ...

  6. springMVC中ajax的实现

    function addDebtResult(){ var repayIds=$("#repayIds").val(); var lateFeeDay=$("#repay ...

  7. Groovy 与 DSL

    一:DSL 概念 指的是用于一个特定领域的语言(功能领域.业务领域).在这个给出的概念中有 3个重点: 只用于一个特定领域,而非所有通用领域,比如 Java / C++就是用于通用领域,而不可被称为 ...

  8. (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现

           架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用        优势:       ...

  9. LeetCode312. Burst Balloons

    Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...

  10. hdu 5914(斐波拉契数列)

    Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...