hiho 1143 矩阵快速幂 求递推式
2015-06-15 18:22
281 查看
题目链接:
hihocoder 1143
思路见题目上
快速幂模板:
题解:
hihocoder 1143
思路见题目上
快速幂模板:
// m^n % k int quickpow(int m,int n,int k) { int b = 1; while (n > 0) { if (n & 1) b = (b*m)%k; n = n >> 1 ; m = (m*m)%k; } return b; }
题解:
#include<iostream> #include<cstdio> #include<cstring> #define MOD 19999997 using namespace std; struct Matrix{ long long m[2][2]; //一定要long long }; Matrix mult(Matrix a,Matrix b) { Matrix t; for(int i=0;i<2;i++) for(int j=0;j<2;j++) t.m[i][j]=(a.m[i][0]*b.m[0][j])%MOD+(a.m[i][1]*b.m[1][j])%MOD; //long long 不会爆 return t; } int m_fastpow(int n) { Matrix unit={1,0,0,1}; //单位矩阵 Matrix x={0,1,1,1}; //递推式 while(n>0) { if(n&1) unit=mult(x,unit); x=mult(x,x); n=n>>1; } return unit.m[1][1]%MOD; } int main() { int n; scanf("%d",&n); printf("%d\n",m_fastpow(n)); return 0; }
相关文章推荐
- Unity UGUI 下拉菜单
- 【MongoDB入门教程】
- Android--开源,安卓自动缩放布局,解决屏幕适配问题
- 【三层】之中断语句
- 【Pytest】pytest的基本设置
- java中sleep与wait的区别
- Cocos2d—声音API
- Official online document, install svn server in centOS
- 联诚发(LCF)助力欧洲杯,向欧洲再出发
- 水果(二重map容器)
- Intent的简介以及属性详解
- JNDI全面总结
- [JAVA]利用google的barcode4j生成二维码和条形码
- Add Binary
- 显示客户端错误,404找不到文件或目录
- Apriori算法
- JAVE not work in linux
- Unity使用ShareSDK 分享、并发布Android及ios
- wxPython基本控件
- Zigzag Conversion