51nod 1242 斐波那契数列的第N项
之前一直没敢做矩阵一类的题目
其实还好吧
推荐看一下 : http://www.cnblogs.com/SYCstudio/p/7211050.html
但是后面的斐波那契 推导不是很懂 前面讲的挺好的
后来看到了 http://blog.csdn.net/flyfish1986/article/details/48014523
相当于 是一个那个东西的k-1次方 而且由于 F(1) = 1 所以直接求k-1次方就可以了
#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9+;
typedef long long ll; class Matrix
{
public:
ll s[][];
Matrix()
{
memset(s,,sizeof(s));
}
Matrix(ll a[][])
{
for(int i=;i<;i++)
for(int j=;j<;j++)
s[i][j] = a[i][j];
}
};
Matrix operator *(Matrix a,Matrix b)
{
Matrix ans;
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
ans.s[i][j] = (ans.s[i][j] + a.s[i][k]*b.s[k][j]%mod)%mod;
return ans;
} void _pow(ll k)
{ ll a[][];
a[][] = ,a[][]=,a[][]=,a[][]=;//初始化特征矩阵
Matrix A(a),B(a);
while (k>)
{
if(k&) A= A*B;
B= B*B;
k>>=;
}
printf("%lld\n",A.s[][]);//最后结果存储在矩阵第一行第一列上
} int main ()
{
ll n;
scanf("%lld",&n);
if(n<=)
{
printf("1\n");
return ;
}
n-=;//这里是因为 本身是矩阵的k-1次幂 但是 本身建立矩阵已经1次了
// 所以n-=2次
_pow(n);
}
51nod 1242 斐波那契数列的第N项的更多相关文章
- (矩阵快速幂)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项(矩阵快速幂)
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; ; ; ...
- 51nod 1242 斐波那契数列的第N项——数学、矩阵快速幂
普通算法肯定T了,所以怎么算呢?和矩阵有啥关系呢? 打数学符号太费时,就手写了: 所以求Fib(n)就是求矩阵 | 1 1 |n-1 第一行第一列的元素. | 1 0 | 其实学过线代 ...
- 1242 斐波那契数列的第N项
1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F( ...
- 51 Nod 1242 斐波那契数列的第N项(矩阵快速幂模板题)
1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) ...
- 51Nod——T 1242 斐波那契数列的第N项
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1242 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 ...
- python脚本10_打印斐波那契数列的第101项
#打印斐波那契数列的第101项 a = 1 b = 1 for count in range(99): a,b = b,a+b else: print(b) 方法2: #打印斐波那契数列的第101项 ...
- 51Nod - 1242 斐波那契(快速幂)
斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, ...
- 斐波那契数列的第N项
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1242 题目: 斐波那契数列的定义如下: F(0) = 0 ...
随机推荐
- MySQL字符集设置及字符转换(latin1转utf8)
MySQL字符集设置及字符转换(latin1转utf8) http://blog.chinaunix.net/uid-25266990-id-3344584.html MySQL字符集设置及字符转换 ...
- CentOS7.1.x+Druid 0.12 集群配置
原文转载自:https://blog.csdn.net/bigtree_3721/article/details/79583008 先决条件:安装版本列表 本次安装满足下面的条件: CentOS v7 ...
- phpStudy安装
以下一直默认安装 访问地址:http://127.0.0.1/vue/2.html
- PHP 常用命令行
1.PHP运行指定文件 php -f test.php (-f 可省略) 2.命令行直接运行PHP代码 php -r "phpinfo();" 如果结果太长,还可以 php -r ...
- C# 序列化(Serialize)与反序列化(Deserialize)
序列化是将对象的状态信息转换为可保持或传输的格式的过程(一堆字符),比如转化为二进制.xml.json等的过程. 反序列化就是将在序列化过程中所生成的二进制串.xml.json等转换成数据结构或者对象 ...
- http协议基础(十)实体首部字段
1.定义 包含在请求和响应中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息 2.Allow 通知客户端能够支持的Request-URI指定资源的所有http方法:如果服务器接收到不支 ...
- Java Nested Classes(内部类~第一篇英文技术文档翻译)
鄙人最近尝试着翻译了自己的第一篇英文技术文档.Java Nested Classes Reference From Oracle Documentation 目录 嵌套类-Nested Classes ...
- Yii2 配置 Nginx 伪静态
主要检查以下代码: location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri ...
- 完整table
.table-bordered{ border:1px solid #cccccc; } .table { border-spacing: 0;/*设置或检索当表格边框独立时(即border-coll ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON LocalMin2
zw版[转发·台湾nvp系列Delphi例程]HALCON LocalMin2 procedure TForm1.Button1Click(Sender: TObject);var img : HUn ...