51nod 1242 斐波那契数列的第N项——数学、矩阵快速幂
普通算法肯定T了,所以怎么算呢?和矩阵有啥关系呢?
打数学符号太费时,就手写了:
所以求Fib(n)就是求矩阵 | 1 1 |n-1 第一行第一列的元素。
| 1 0 |
其实学过线代的同学应该一看就看出来了,然鹅我还没学,所以不得不写几个不必要的等式=。=
#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long
#define INF 1000000009 ll n;
struct mat{
ll c[][];
}t; mat matmult(mat a, mat b){
mat c = {};
for(int i = ; i < ; i++)
for(int j = ; j < ; j++)
for(int k = ; k < ; k++)
c.c[i][j] = (c.c[i][j]+(a.c[i][k] * b.c[k][j])) % INF; return c;
} mat matpow(mat t,ll n){
mat ans;//初始化为单位矩阵
ans.c[][]=ans.c[][]=,ans.c[][]=ans.c[][]=;
while(n){
if(n&) ans=matmult(ans, t);
t = matmult(t, t);
n >>= ;
}
return ans;
}
int main(){
while(cin>>n){
t.c[][] = ;
t.c[][] = ;
t.c[][] = ;
t.c[][] = ;
mat ans = matpow(t,n-);
//cout<<ans.c[0][0]<<' '<<ans.c[0][1]<<endl<<ans.c[1][0]<<' '<<ans.c[1][1]<<endl;
printf("%lld\n", ans.c[][]);
}
return ;
}
51nod 1242 斐波那契数列的第N项——数学、矩阵快速幂的更多相关文章
- 51Nod 1242 斐波那契数列的第N项(矩阵快速幂)
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; ; ; ...
- 51 Nod 1242 斐波那契数列的第N项(矩阵快速幂模板题)
1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) ...
- 51nod1242斐波那契数列的第N项 【矩阵快速幂】
斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, 34, ...
- (矩阵快速幂)51NOD 1242斐波那契数列的第N项
斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, ...
- 51nod 1242 斐波那契数列的第N项
之前一直没敢做矩阵一类的题目 其实还好吧 推荐看一下 : http://www.cnblogs.com/SYCstudio/p/7211050.html 但是后面的斐波那契 推导不是很懂 前面讲的挺 ...
- 1242 斐波那契数列的第N项
1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F( ...
- 51Nod——T 1242 斐波那契数列的第N项
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1242 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 ...
- HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Li ...
- python脚本10_打印斐波那契数列的第101项
#打印斐波那契数列的第101项 a = 1 b = 1 for count in range(99): a,b = b,a+b else: print(b) 方法2: #打印斐波那契数列的第101项 ...
随机推荐
- Suse 11 sp4 安装Oracle 11g
环境信息 suse 11 sp4 64位 企业版配置:虚拟机,1U4CORE,4GB内存,100GB存储(实际可用空间20GB) linux环境配置修改 在安装oracle之前,需要先对linux 的 ...
- ssh断开后保持程序运行
https://blog.csdn.net/gatieme/article/details/52777721 https://blog.51cto.com/zjking/1117828 https:/ ...
- G - B-number
#include<stdio.h> #include<string.h> using namespace std; typedef long long ll; ]; ][][] ...
- java数据结构----带权图
1.带权图:要引入带权图,首先要引入最小生成树,当所有的边拥有相同的权值时.问题变得简单了,算法可以选择任意一条边加入最小生成树.但是当边有不同的权值时,需要用一些算法决策来选择正确的边. 2.带权图 ...
- mongodb-Configuration
命令行和配制后文件接口为Mongodb的管理者提供了大量的控制选项.在这篇文章中提供了对于一般应用场景的最佳实践配置. mongod --config /etc/mongod.conf mongod ...
- Gym - 101810D ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- Count on a tree II SPOJ - COT2 && bzoj1086 王室联邦 && bzoj2589
https://cn.vjudge.net/problem/SPOJ-COT2 这个是树上莫队模版啊.. 树上莫队有两种,第一种就是括号序莫队 设节点i在括号序中首次出现位置为pl[i] 那么路径(i ...
- HTML文档设置标记
格式标记 1.<br> 强制换行标记,让后面的文字.图片.表格等,显示在下一行.单标记 2.<p> 换段落标记,换段落是由于多个空格和回车在HTML中会被等效为一个空格,所以H ...
- B. Hierarchy
http://codeforces.com/problemset/problem/17/B 用邻接矩阵建图后, 设cost[v]表示去到顶点v的最小值. 很多个人去顶点v的话,就选最小的那个就OK 然 ...
- C#泛型学习笔记
泛型默认值default 如果T是int默认是0 str默认是null public class MyTest<T>{ public T GetValue() { T t = defau ...