POJ 3070 矩阵快速幂
2016-03-31 21:49
274 查看
#include <cstdio> #include <iostream> using namespace std; const int MOD = 10000; int n; struct matrix { int m[2][2]; } ans, base; matrix multi(matrix a, matrix b) { matrix tmp; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { tmp.m[i][j] = 0; for (int k = 0; k < 2; ++k) tmp.m[i][j] = (tmp.m[i][j] + a.m[i][k] * b.m[k][j]) % MOD; } } return tmp; } int fast_mod(int n) { base.m[0][0] = base.m[0][1] = base.m[1][0] = 1; base.m[1][1] = 0; ans.m[0][0] = ans.m[1][1] = 1; ans.m[0][1] = ans.m[1][0] = 0; while (n) { if (n & 1) { ans = multi(ans, base); } base = multi(base, base); n >>= 1; } return ans.m[0][1]; } int main(int argc, char const *argv[]) { while (scanf("%d", &n) && n != -1) printf("%d\n", fast_mod(n)); return 0; }
套用模板就可以了。
相关文章推荐
- selenium运行火狐报错FirefoxDriver : Unable to connect to host 127.0.0.1 on port 7055
- APK瘦身记,如何实现高达53%的压缩效果
- 线性表的链式表示和实现----实用算法
- 3. Longest Substring Without Repeating Characters【M】【28】【leetcode】
- CodeForces 439B Devu, the Dumb Guy
- codeforces 659B Qualifying Contest
- JFusionChartFree
- Webservice之schema
- codeforces 638B - Making Genome in Berland (STL&&DFS)
- Java设计模式小问题
- Linux命令(3):date命令
- 免费IT技术视频网站
- atomic和unatomic区别
- 23中设计模式
- 第五周学习总结
- Dom解析xml文件(3)
- Spring MVC之文件上传与下载
- 从控制台录入一个文件路径,将其拷贝到当前目录
- java包生成API遇乱码问题解决方法
- hdu 1025 Constructing Roads In JGShining's Kingdom