51nod_1242 斐波那契数列的第N项
2017-04-30 09:59
351 查看
原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1242
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注
斐波那契数列的定义如下:
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, 55, 89, 144, 233, 377, …)
给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。
Input
输入1个数n(1 <= n <= 10^18)。
Output
输出F(n) % 1000000009的结果。
Input示例
11
Output示例
89
数据量大的斐波那契数列可以用矩阵快速幂做,如下:
已经经过证明得到的公式:
实际上我们可以经过递推求F【n】
参考博客:http://blog.csdn.net/g_congratulation/article/details/52734306
代码:
1242 斐波那契数列的第N项
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注
斐波那契数列的定义如下:
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, 55, 89, 144, 233, 377, …)
给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。
Input
输入1个数n(1 <= n <= 10^18)。
Output
输出F(n) % 1000000009的结果。
Input示例
11
Output示例
89
数据量大的斐波那契数列可以用矩阵快速幂做,如下:
已经经过证明得到的公式:
实际上我们可以经过递推求F【n】
参考博客:http://blog.csdn.net/g_congratulation/article/details/52734306
代码:
//矩阵快速幂 #include <cstdio> #include <cstring> #define MOD 1000000009 typedef long long ll; struct matrix{ ll mat[5][5]; }; matrix mul(matrix &a, matrix &b) { matrix c; int i, j, k; for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) { c.mat[i][j] = 0; for (k = 0; k < 2; k++) { c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % MOD; } } return c; } matrix pow(matrix a, ll n) { matrix ans; int i, j; for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) if (i == j) ans.mat[i][j] = 1; else ans.mat[i][j] = 0; while (n) { if (n & 1) ans = mul(ans, a); a = mul(a, a); n /= 2; } return ans; } int main() { ll n; matrix a, b; scanf("%lld", &n); a.mat[0][0] = a.mat[0][1] = a.mat[1][0] = 1; a.mat[1][1] = 0; b = pow(a, n); printf("%lld\n", b.mat[0][1] % MOD); return 0; }
相关文章推荐
- 51nod 1242 斐波那契数列的第N项
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列第n项
- 51nod 1242 斐波那契数列的第N项【矩阵快速幂】
- 【51Nod】1242 - 斐波那契数列的第N项(矩阵快速幂)
- 【51Nod】1242 斐波那契数列的第N项
- 51nod 1242 斐波那契数列的第N项
- 51nod 1242 斐波那契数列第N项
- [51NOD]-1242 斐波那契数列的第N项 [矩阵快速幂]
- 51nod 1242 斐波那契数列的第N项
- 51Nod 1242 斐波那契数列的第N项
- 51nod 1242 斐波那契数列的第N项(矩阵幂运算)
- 51Nod-1242-斐波那契数列的第N项
- 51nod 1242 斐波那契数列的第N项(O(logn)求递推式)
- 51nod 1242 斐波那契数列的第N项(矩阵幂运算)
- 51Nod - 1242 斐波那契数列的第N项 矩阵快速幂
- 51Nod 1242:斐波那契数列的第N项
- 20140911 【 初等数论 】 51nod 1242 . 斐波那契数列的第N项
- 51nod--1242 斐波那契数列第N项 (矩阵乘法优化)
- 51nod 1242 斐波那契数列的第N项