博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
矩阵快速幂 POJ 3070 Fibonacci
阅读量:5999 次
发布时间:2019-06-20

本文共 1305 字,大约阅读时间需要 4 分钟。

 

1 /* 2     矩阵快速幂:求第n项的Fibonacci数,转置矩阵都给出,套个模板就可以了。效率很高啊 3 */ 4 #include 
5 #include
6 #include
7 #include
8 using namespace std; 9 10 const int MAXN = 1e3 + 10;11 const int INF = 0x3f3f3f3f;12 const int MOD = 10000;13 struct Mat {14 int m[2][2];15 };16 17 Mat multi_mod(Mat a, Mat b) {18 Mat ret; memset (ret.m, 0, sizeof (ret.m));19 for (int i=0; i<2; ++i) {20 for (int j=0; j<2; ++j) {21 for (int k=0; k<2; ++k) {22 ret.m[i][j] = (ret.m[i][j] + a.m[i][k] * b.m[k][j]) % MOD;23 }24 }25 }26 return ret;27 }28 29 int matrix_pow_mod(Mat x, int n) {30 Mat ret; ret.m[0][0] = ret.m[1][1] = 1; ret.m[0][1] = ret.m[1][0] = 0;31 while (n) {32 if (n & 1) ret = multi_mod (ret, x);33 x = multi_mod (x, x);34 n >>= 1;35 }36 return ret.m[0][1];37 }38 39 int main(void) { //POJ 3070 Fibonacci40 int n;41 while (scanf ("%d", &n) == 1) {42 if (n == -1) break;43 Mat x;44 x.m[0][0] = x.m[0][1] = x.m[1][0] = 1; x.m[1][1] = 0;45 printf ("%d\n", matrix_pow_mod (x, n));46 }47 48 return 0;49 }

 

转载于:https://www.cnblogs.com/Running-Time/p/4693092.html

你可能感兴趣的文章
阿里云 Aliplayer高级功能介绍(九):自动播放体验 ...
查看>>
05.java多线程问题
查看>>
Centos下编译安装Samba
查看>>
个人安装caffe过程中遇到的问题及解决方案
查看>>
SAP如何查看会计凭证
查看>>
短视频平台开发时那些容易掉进去的“深坑”
查看>>
制造业瓶颈如何突破?“智变与突破——制造业人工智能产业峰会·南京”来献策 ...
查看>>
弹性计算双周刊 第23期
查看>>
阿里云发布2019数字化趋势报告,未来5年零售业数字化程度将达80%
查看>>
阿里云DDoS高防IP防御原理、功能优势及价格收费详解
查看>>
High Level REST Client 访问阿里云6.3 Elasticsearch 实例实现
查看>>
zabbix 添加mysql监控(用自带模板)
查看>>
洛谷 P3819 松江1843路
查看>>
网站架构的逐步优化演变
查看>>
125.53亿元!融创收购泛海北京泛海国际项目及上海董家渡项目
查看>>
Firefox 将添加画中画功能
查看>>
Spring Boot(07)——ConfigurationProperties介绍
查看>>
动力节点Java学习资料为互联网应用文件存储而生之FastDFS
查看>>
go常用辅助工具
查看>>
BeetlSQL 2.11.2 发布,Java Dao 工具
查看>>