斐波那契数列的第N项
2014-11-06 21:02
471 查看
斐波那契数列的定义如下:
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
Output
Input 示例
Output 示例
[/code]
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
#include <stdio.h> #define MOD 1000000009; struct RECT{ long long x11,x12,x21,x22; }; RECT sum,data; RECT mult(RECT tem){ RECT result; result.x11=(tem.x11*data.x11+tem.x12*data.x21)%MOD; result.x12=(tem.x11*data.x12+tem.x12*data.x22)%MOD; result.x21=(tem.x21*data.x11+tem.x22*data.x21)%MOD; result.x22=(tem.x21*data.x12+tem.x22*data.x22)%MOD; return result; } long long quick_Mult(long long n){ { sum.x11=1; sum.x12=0; sum.x21=0; sum.x22=0; } { data.x11=1; data.x12=1; data.x21=1; data.x22=0; } while(n){ if(n%2) sum=mult(sum); n=n/2; data=mult(data); } return sum.x11; } int main(){ long long n; scanf("%I64d",&n); printf("%I64d\n",quick_Mult(n-1)); }
[/code]
相关文章推荐
- 快速计算类似斐波那契数列数列的数列的第N项,矩阵快速幂
- 斐波那契数列的第N项(1≤n≤10^18 矩阵快速幂)
- 斐波那契数列求第N项的值
- 由递推公式求数列第n项的值/山理工ACM-1689斐波那契?
- 没什么亮点的第一篇呐…C++代码,求斐波那契(Fibonacci)数列的第n项,n可以为负数。递归算法,使用了记忆化搜索。
- 斐波那契数列第n项求余
- 二分法矩阵求斐波那契(fibonacci)数列第n项
- java实现斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
- 斐波那契数列的第n项
- 斐波那契数列的第n项。
- 斐波那契数列和二分查找的算法(递归与非递归)
- 剑指offer编程题Java实现——面试题9斐波那契数列
- 递归与非递归实现斐波那契数列
- 斐波那契数列的递归改良
- 斐波那契数列打印机
- 斐波那契数列的递归和非递归解法
- 斐波那契数列
- Java 递归 斐伯那挈数列 第N项
- 斐波那契数列解法,矩阵解法,学习
- 【洛谷1349】广义斐波那契数列