题目分析:

对于给出的n,求出斐波那契数列第n项的最后4为数,当n很大的时候,普通的递推会超时,这里介绍用矩阵快速幂解决当递推次数很大时的结果,这里矩阵已经给出,直接计算即可

 #include<iostream>
#include<stdio.h>
using namespace std; const int mod = ;
struct mat{
int m[][];
}; mat operator * (mat a, mat b){ //重载乘号,同时将数据mod10000
mat ret;
for(int i = ; i < ; i++){
for(int j = ; j < ; j++){
long long temp = ;
for(int k = ; k < ; k++){
temp += a.m[i][k] * b.m[k][j];
temp %= mod;
}
ret.m[i][j] = temp;
}
}
return ret;
} mat pow_mat(mat a, int n){ //矩阵快速幂和快速幂相同(广义快速幂的思想)
mat res = a;
while(n){
if(n&) res = res * a;
a = a*a;
n >>= ;
}
return res;
} int main(){
int n;
while(scanf("%d", &n) !=EOF){
if(n == -) break;
if(n == ) printf("0\n");
else if(n == ) printf("1\n");
else if(n == ) printf("1\n");
else{
mat a; //构造一个初始的矩阵 其n-2次方的m[0][0]就是所求的答案
a.m[][] = ;
a.m[][] = ;
a.m[][] = ;
a.m[][] = ;
mat ans = pow_mat(a, n-); //调用矩阵快速幂计算
printf("%d\n", ans.m[][]);
}
}
return ;
}

最新文章

  1. 记一次tomcat线程创建异常调优:unable to create new native thread
  2. JQ对象到底是什么
  3. C# Enum 进行逻辑运算
  4. 37. Binary Tree Zigzag Level Order Traversal &amp;&amp; Binary Tree Inorder Traversal
  5. AutoHotKey使用:空格键坏了怎么办?
  6. 夺命雷公狗---DEDECMS----6快速入门之总结篇
  7. JavaEE基础(四)
  8. mvc伪静态&lt;三&gt; IIS配置
  9. Windows API 的数据类型与 Delphi 数据类型对照表
  10. AlarmDemo-with-Database
  11. Ehcache(01)——简介、基本操作
  12. 背投广告js
  13. 算法 python实现(二) 冒泡排序
  14. ICE学习第一步-----配置ICE环境变量
  15. 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理
  16. UML中的类间的关系
  17. JS框架设计读书笔记之-节点模块
  18. Django--入门篇:下载与项目生成
  19. Linux input系统数据上报流程【转】
  20. 【C/C++】Dijkstra算法的简洁实现

热门文章

  1. how to design AWS SQS?
  2. [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积
  3. [LeetCode] 10. Regular Expression Matching 正则表达式匹配
  4. 《30天自制操作系统》笔记2 --- 初步了解汇编产生的二进制(Day1)
  5. mac生成iOS证书(配图)
  6. 第02组 Alpha冲刺(6/6)
  7. Go Windows 环境安装及配置(一)
  8. (三)golang--执行流程分析
  9. 1+X”中级Web前端证书对应课程分析
  10. 在eclipse中,用maven创建一个web项目工程