fib数列性质
来源:互联网 发布:google chrome翻墙mac 编辑:程序博客网 时间:2024/04/27 19:40
- f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1。
- f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)。
- f(2)+f(4)+f(6)+…+f(2n) =f(2n+1)-1。
- [f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1)。
- f(0)-f(1)+f(2)-…+(-1)^n·f(n)=(-1)^n·[f(n+1)-f(n)]+1。
- f(m+n-1)=f(m-1)·f(n-1)+f(m)·f(n)。
- [f(n)]^2=(-1)^(n-1)+f(n-1)·f(n+1)。
- f(2n-1)=[f(n)]^2-[f(n-2)]^2。
- 3f(n)=f(n+2)+f(n-2)。
- f(2n-2m-2)[f(2n)+f(2n+2)]=f(2m+2)+f(4n-2m) [ n〉m≥-1,且n≥1]
- f(2n+1)=[f(n)]^2+[f(n+1)]^2.
快速求fib数,
令base = |0 1| 即 |f[0] f[1]|
|1 1| |f[1] f[2]|
那么 res = base^n = |f[n-1] f[n] |
|f[n] f[n+1]|
利用矩阵快速幂即能在O(lg n)的时间能求出f[n]。
struct node{ long long fib[2][2]; node(){ fib[0][0] = 0, fib[1][1] = fib[0][1] = fib[1][0] = 1; }};const int mod = 1000000007;node mutil(const node &a, const node &b){ node tmp; for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ tmp.fib[i][j] = 0; for(int k = 0; k <2; k ++){ tmp.fib[i][j] = (tmp.fib[i][j] +(a.fib[i][k]%mod *b.fib[k][j]%mod)%mod)%mod; } } } return tmp;}long long Fib(long long n){ node res; node base;while(n){if(n&1){res = mutil(res, base);}base = mutil(base, base);n >>= 1;}return (res.fib[0][0])%mod;}
0 0
- fib数列性质
- hdu 3936 FIB Query 菲波拉切数列的性质+矩阵乘法
- fib数列
- CF 316E3(Summer Homework-广意Fib数列在p,q=1时的性质-Fib线段树)
- 关于Fib数列
- Fib数列问题
- Fib数列问题2
- 多校第十场 HDU 3936 FIB Query(fibonacci 数列的性质 ,及Ologn 矩阵加速乘算法)
- sjtu oj 1022. Fib数列
- fibonacci数列的性质
- 斐波拉契数列性质
- Fibonacci数列一些性质
- Fib数列(两种实现方式)
- 输出fib数列的第20个数
- Fib数列用迭代法时间超限
- HDOJ-2044-一只小蜜蜂【fib数列】
- HDU 5167 Fibonacci (DFS + Fib数列)
- fib 斐波那契数列生成器
- iOS中UIWindow妙用(一) App 的密码保护功能
- mondrian 生成图表 XY轴数据过多
- 东莞已摘黄帽 东莞为什么会被叫做性都?
- JDBC 3种获得mysql插入数据的自增字段值的方法
- veste barbour homme the mother Chen Fengju two cronies to pick up one by one
- fib数列性质
- 2015红帽网上高峰论坛学习心得
- 串结构练习——字符串连接
- 1023. 组个最小数
- Android Activity 测试指南
- Android应用开发使用第三方字体
- 微信发送客服消息
- C# 摘录自MSDN。 DataGridView控件的所有事件!
- 十道海量数据处理面试题与十个方法大总结