博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【poj3070】 Fibonacci
阅读量:4342 次
发布时间:2019-06-07

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

 (题目链接)

题意

  用矩阵乘法求fibonacci数列的第n项。

Solution

  矩乘入门题啊,题目把题解已经说的很清楚里= =。

  矩乘其实很简单,通过自己YY或者是搜索对于一个递推公式求出它所对应的矩阵,然后套个快速幂就可以迅速求解第n项。

代码

// poj3070#include
#include
#include
#include
#include
#include
#define LL long long#define inf 2147483640#define Pi acos(-1.0)#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);using namespace std;int n,a[2][2],b[2][2];void mul(int a[2][2],int b[2][2],int ans[2][2]) { int t[2][2]; for (int i=0;i<2;i++) for (int j=0;j<2;j++) { t[i][j]=0; for (int k=0;k<2;k++) t[i][j]=(t[i][j]+a[i][k]*b[k][j])%10000; } for (int i=0;i<2;i++) for (int j=0;j<2;j++) ans[i][j]=t[i][j];}void pow(int k) { while (k) { if (k&1) mul(a,b,b); k>>=1; mul(a,a,a); }}int main() { while (scanf("%d",&n)!=EOF) { if (n==-1) break; a[0][0]=a[0][1]=a[1][0]=1;a[1][1]=0; b[0][0]=b[1][1]=1; b[1][0]=b[0][1]=0; pow(n); printf("%d\n",b[1][0]); } return 0;}

  

转载于:https://www.cnblogs.com/MashiroSky/p/5913657.html

你可能感兴趣的文章
MongoDB 备份与还原
查看>>
Oracle启动与关闭数据库实例
查看>>
Spring day01
查看>>
Linux 安装JDK Tomcat MySQL(使用Mac远程访问)
查看>>
hihocoder-1740-替换函数
查看>>
Codeforce Round #219 Div2
查看>>
option value的值可以有空格 再试试吧
查看>>
.htaccess to httpd.conf
查看>>
node.js 基础学习笔记2
查看>>
hadoop中常见元素的解释
查看>>
BZOJ-1497 最大获利
查看>>
4-4 修改文件
查看>>
并发编程(十):AQS
查看>>
条件注释判断浏览器版本<!--[if lt IE 9]>
查看>>
Comparison among several SGD derivation
查看>>
ModelAndView同时向页面传递多个参数
查看>>
如何快而好的学习编程
查看>>
zabbix监控主机IO
查看>>
sudo环境变量问题;程序库函数寻找
查看>>
samba 配置参数详解
查看>>