快速幂取模模板
来源:互联网 发布:最新手机淘宝开店教程 编辑:程序博客网 时间:2024/05/16 16:00
用于求解 a 的 b 次方,b是一个非常大的数,可以在O(logn)的复杂度求解。
ll pow(ll a,ll b,ll mod){ ll res=1; while(b>0) { if(b&1) res=(res*a)%mod; a=(a*a)%mod; b>>=1; } return res;}
求一个矩阵的很大的次方幂,例如斐波那契数列可以用矩阵来求
#include<cstdio>#include<iostream>#include<vector>using namespace std;typedef vector<int> vec;typedef vector<vec> mat;typedef long long LL;const int N = 10000;mat mul(mat a,mat b) //矩阵相乘{ mat c(a.size(),vec(b[0].size())); for(int i=0;i<a.size();i++) { for(int k=0;k<b.size();k++) { for(int j=0;j<b[0].size();j++) c[i][j] = ( c[i][j] + a[i][k] * b[k][j] ) % N; } } return c;}mat pow(mat a,int n) //快速幂{ mat b(a.size(),vec(a.size())); for(int i=0;i<a.size();i++) b[i][i]=1; while(n>0) { if(n & 1) b=mul(b,a); a=mul(a,a); n >>= 1; } return b;}LL n;int main(){ mat a(2,vec(2)); while(~scanf("%d",&n)&&n!=-1) { a[0][0]=1,a[0][1]=1; a[1][0]=1,a[1][1]=0; a=pow(a,n); printf("%d\n",a[1][0]); } return 0;}
0 0
- 快速幂取模算法模板
- 【模板】快速幂取模
- 二进制快速幂取模模板
- 快速幂取模讲解&模板
- 快速幂取模算法模板
- 快速幂取模算法【模板】
- 快速幂取模模板
- 快速幂取模运算模板
- 快速幂取模算法模板
- 快速幂取模 模板
- 快速幂取模模板算法
- 快速幂取模算法【模板】
- 【模板】快速幂取模
- 算法模板之快速幂取模
- 洛谷 P1226 快速幂取模 模板
- 【个人模板】 快速幂取模,矩阵快速幂,快速乘
- 大数取模与快速幂取模模板
- 【HPU】 1194 Judge【快速幂取模】【模板】
- javascript权威指南-笔记
- 详解Android中AsyncTask的使用
- mFC + ffmpeg
- ECSHOP漏洞集
- Canvas的方法
- 快速幂取模模板
- 关于oracle sql 调优学习的一点总结
- hibernate设置延迟加载后获得关联对象报错的解决方案
- 实时通信技术的架构设计
- ubuntu14.04 配置hadoop 单机+伪分布式
- 用pethon 抓取网站图片代码
- netty in action第六章-ChannelHandler
- iOS在当前视图隐藏tabbar
- 2015.03.20使命