比较详细的讲解了如何构造这个矩阵
https://blog.csdn.net/Akatsuki__Itachi/article/details/80443939
这是几个常用的递推式。
像 i3i^3i3是如何推出来的,他就需要结合二项式定理通过i2i^2i2,i1i^1i1推得。

例题:来源:河南理工大学2020暑期集训第二次积分赛 C题

解题思路如下(来源:官方题解):
代码:

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stdlib.h>
const int maxn = 101000;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 1e9+7;
using namespace std;struct node{ll m[10][10];
};node mul(node a,node b){node ans;memset(ans.m,0,sizeof ans.m);for(int i=0;i<6;i++)for(int j=0;j<6;j++)for(int k=0;k<6;k++)ans.m[i][j]=(ans.m[i][j]+a.m[i][k]*b.m[k][j])%mod;return ans;
}node pow(node a,ll b){node ans;memset(ans.m,0,sizeof ans.m);for(int i=0;i<6;i++) ans.m[i][i]=1;while(b){if(b&1) ans=mul(ans,a);a=mul(a,a);b>>=1;}return ans;
}node x={{{1,1,1,0,0,0},{1,0,0,0,0,0},{0,0,1,3,3,1},{0,0,0,1,2,1},{0,0,0,0,1,1},{0,0,0,0,0,1}
}};
node y={{{5,0,0,0,0,0},{2,0,0,0,0,0},{27,0,0,0,0,0},{9,0,0,0,0,0},{3,0,0,0,0,0},{1,0,0,0,0,0},}};
int main(){int t;cin>>t;while(t--){ll n;node ans=x;cin>>n;if(n==1){cout<<2<<endl;continue;}if(n==2){cout<<5<<endl;continue;}ans=pow(ans,n-2);ans=mul(ans,y);cout<<ans.m[0][0]%mod<<endl;}return 0;
}

数论基础--矩阵快速幂 及其例题相关推荐

  1. ACM数论之矩阵快速幂

    题目链接:杭电1005.一个简单的矩阵快速幂,一开始一直不理解,只是会单纯数字的快速幂,后来经人点拨,只是运算单位不同,一个是矩阵一个是数字.普通数字中的快速幂是用1来作为累乘量的,而矩阵中的单位矩阵 ...

  2. 数论基础之快速幂(详细教程)

    2020.2.17更新,将模板改为c++版,以及增加了对循环版快速幂的理解 一.问题引入 求 anmodpa^n \ mod \ pan mod p 的结果 分析 思路:看到这样的题目,我们最容易想到 ...

  3. POJ2118基础矩阵快速幂

    题意:        an=Σ1<=i<=kan-ibi mod 10 000 for n >= k,题意看了好久才懂,有点蛋疼啊, 这个题目要是能看懂题意就简单了,先给你k,然后给 ...

  4. Starry的神奇魔法 矩阵快速幂

    题目描述 啦啦啦,Starry正愉快的做着编程题,代码是多么优美呀!突然,有人问他一道数学题,对于数学渣渣的Starry来说,这是多么的烦恼呀.不过不要紧,他还可以问其他人的,所以他想到了聪明的你们. ...

  5. 数学--数论--HDU - 6395 Let us define a sequence as below 分段矩阵快速幂

    Your job is simple, for each task, you should output Fn module 109+7. Input The first line has only ...

  6. HDU6395 Sequence(矩阵快速幂+数论分块)

    题意: F(1)=A,F(2)=B,F(n)=C*F(n-2)+D*F(n-1)+P/n 给定ABCDPn,求F(n) mod 1e9+7 思路: P/n在一段n里是不变的,可以数论分块,再在每一段里 ...

  7. 数论-快速幂、矩阵快速幂、慢速乘

    文章目录 快速幂 矩阵快速幂 慢速乘 例题 HDU-2817 HDU-3117 XUJC-1395 快速幂 首先幂运算 a n a^n an就是 n n n个 a a a相乘,我们可以直接调用库函数 ...

  8. 快速幂+矩阵快速幂(总结+例题)

    1.快速幂 以求a的b次方来介绍: 首先把b转换成二进制数 该二进制数第i位的权为  2^i - 1 . 比如 : 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 ...

  9. 数论(二)快速幂 (矩阵快速幂)等比数列求和 最大公因数和最小公倍数

    快速幂 1.快速幂用于快速计算a的b次方,时间复杂度是O(log2b) 2.用于a和b比较大小的情况,常用的快速幂是带模快速幂 3.分析一个例子: 3 15=?  15=(1111)2 3e1 * ...

最新文章

  1. 你真的会用 CocoaPods 吗?
  2. 自然语言处理(NLP)之使用TF-IDF模型计算文本相似度
  3. 分布式技术追踪 2017年第十五期
  4. 操作系统二:计算机内存体系
  5. 华为数据之道_华为规划的数字世界是什么样子的?
  6. 利用计算机漏洞犯罪,利用漏洞非法谋利2000元怎么处罚
  7. Zabbix2.2.6邮件报警设置方法
  8. 对称密码和非对称密码体系_密码学类型:对称和不对称
  9. CCNA学习总结—OSPF协议—OSPF协议原理
  10. pytorch--nn模块(2)optim
  11. Spring Boot项目JSP页面中文乱码解决
  12. 计算机公式mode,强大的 Org mode(3): 表格的基本操作及公式、绘图 · ZMonster's Blog...
  13. 《微信小程序》音乐播放器项目
  14. 想查看微信好友撤回的消息?Python帮你搞定
  15. 编写一个函数,判断某个数是否为水仙花数。
  16. 自用PTA题目记录0024
  17. C语言文件有关的基本知识,以及函数打开与关闭文件!
  18. cad重新加载php命令,cad清理图层命令如何使用
  19. keras的seq2seq
  20. c语言xp与pow的差别,关于c ++:调用pow()时舍入结果的差异

热门文章

  1. 利用边缘检测计算物体面积(内含源码)
  2. 如何消除摄影中的运动模糊?
  3. 卷积神经网络是如何实现不变性特征提取的
  4. Python加速运行技巧
  5. 监控利器Zabbix之主动模式和被动模式
  6. 正面反击 Google、FB 等巨头,万维网之父携 Solid 归来
  7. Bzoj2337:[HNOI2011]XOR和路径
  8. HTTP协议和工作原理
  9. 小米miui系统怎么关闭文件管理里的热门视频和表情?
  10. java中@Qualifier(string)是什么用法