http://poj.org/problem?id=3070

题目大意:求Fibonacci数列第n项,对10000取模。

矩阵乘法板子题……实在不知道写什么了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
ll n,m=;
struct node{
ll g[][];
}f,res;
void buildI(node &x){//构造单位矩阵
for(int i=;i<=;i++){
for(int j=;j<=;j++){
if(i==j)x.g[i][j]=1LL;
else x.g[i][j]=0LL;
}
}
return;
}
void multi(node &x,node &y,node &z){//z=x*y
memset(z.g,,sizeof(z.g));
for(int i=;i<=;i++){
for(int j=;j<=;j++){
if(x.g[i][j]){
for(int k=;k<=;k++){
z.g[i][k]+=x.g[i][j]%m*y.g[j][k]%m;
z.g[i][k]%=m;
}
}
}
}
return;
}
void qpow(ll k){
buildI(res);
node tmp=f,t;
while(k!=){
if(k&){
multi(res,tmp,t);
res=t;
}
multi(tmp,tmp,t);
tmp=t;
k>>=;
}
return;
}
ll solve(){
if(n==)return 0LL;
if(n<=)return 1LL;
qpow(n-);
ll ret=res.g[][]%m+res.g[][]%m;
return ret%m;
}
int main(){
while(scanf("%lld",&n)!=EOF){
if(n==-)break;
f.g[][]=;f.g[][]=;
f.g[][]=;f.g[][]=;
ll res=solve();
printf("%lld\n",res);
}
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

POJ3070:Fibonacci——题解的更多相关文章

  1. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  2. poj3070 Fibonacci

    Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. F ...

  3. POJ3070 Fibonacci[矩阵乘法]【学习笔记】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  4. 矩阵十题【六】 poj3070 Fibonacci

    题目链接:http://poj.org/problem? id=3070 题目大意:给定n和10000,求第n个Fibonacci数mod 10000 的值,n不超过2^31. 结果保留四位数字. 非 ...

  5. LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci 题解

    题目传送门 如果之前推过斐波那契数列前缀和就更好做(所以题目中给出了). 斐波那契数列前缀和题目链接 先来推一下斐波那契数列前缀和: \[\sum\limits_{i=1}^nf(i) \] 其中 \ ...

  6. poj3070 Fibonacci 矩阵快速幂

    学了线代之后 终于明白了矩阵的乘法.. 于是 第一道矩阵快速幂.. 实在是太水了... 这差不多是个模板了 #include <cstdlib> #include <cstring& ...

  7. POJ3070 Fibonacci(矩阵快速幂加速递推)【模板题】

    题目链接:传送门 题目大意: 求斐波那契数列第n项F(n). (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路: 用矩阵乘法加速递推. 算法竞赛进阶指南的模板: #includ ...

  8. 2018.09.25 poj3070 Fibonacci(矩阵快速幂)

    传送门 矩阵快速幂板题,写一道来练练手. 这一次在poj做题总算没忘了改万能库. 代码: #include<iostream> #include<cstdio> #define ...

  9. poj3070 Fibonacci(矩阵快速幂)

    矩阵快速幂基本应用. 对于矩阵乘法与递推式之间的关系: 如:在斐波那契数列之中 f[i] = 1*f[i-1]+1*f[i-2]  f[i-1] = 1*f[i-1] + 0*f[i-2].即 所以, ...

随机推荐

  1. Ruby基础教程 1-10

    类结构 1.数值类结构     Fixnum到Bignum会自动转换   2.常用数值表示   3. ans=10.divmod(3) ans[0]是商  ans[1]是余数   4.实例方法roun ...

  2. HTTP与IIS知识点

    HTTP TCP/IP 使用的网络是在TCP/IP协议族的基础上运作的.HTTP属于它内部的一个子集. 协议:计算机与设备要互相通信,双方就必须基于相同的方法.这种规则称为协议(protocol) 分 ...

  3. Git 新建文件并提交

    1.创建一个readme.txt. cd /home/cyp/learngit touch readme.txt vim readme.txt 编写内容, wq 保存推出 2.提交步骤 2.1  gi ...

  4. mysql新手入门随笔4

    40.子查询:出现在其他SQL语句里的SELECT语句 例如:SELECT sname,mark FROM student WHERE mark = (SELECT max(mark) FROM st ...

  5. 博客更换至 www.zhaoch.top

    博客更换至 www.zhaoch.top 随手拷了一些链接 http://www.zhaoch.top/操作系统/linux/常用命令备忘.html http://www.zhaoch.top/操作系 ...

  6. 【WXS全局对象】Math

    Math对象用于执行数学任务. 属性: 名称 说明 Math.E 代表算术常量 e,即自然对数的底数,其值近似于 2.71828. Math.LN10 就是 loge10,即 10 的自然对数,其值近 ...

  7. 国内版Office365实现MFA的方案(未完)

    现在二十一世纪互联版也可以实现了MFA,现在也就是2017年3月份,支持了PC,但是对移动端应用还是不支持的,请了解. 具体方法如下: 登录国内版Office365(事例为高级商业版 https:// ...

  8. ubuntu 18.04 LTS server系统安装失败问题解决

    准备自己搭一个服务器,USB引导盘的方式安装ubutun系统. 中途遇到两个问题,导致耗时比较久,记录如下. 问题一: installing system阶段卡主 具体描述: 配置镜像源地址以后,进入 ...

  9. BZOJ 1503 郁闷的出纳员(平衡树)(NOI 2004)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作 ...

  10. SGU 520 Fire in the Country(博弈+搜索)

    Description This summer's heat wave and drought unleashed devastating wildfires all across the Earth ...