Math: Fibonacci
https://www.zhihu.com/question/28062458
http://blog.csdn.net/hikean/article/details/9749391
对于Fibonacci数列,1,1,2,3,5,8,13,21...
long fib(int n)
{
if (n == || n == )
{
return ;
}
return fib(n-) + fib(n-);
}
long fib(int n)
{
if (n == || n == )
{
return ;
}
vector <long> fibs(, );
for (int i = ; i <= n; ++i)
{
fibs.push_back(fibs[i-] + fibs[i-]);
}
return fibs[n];
}
long fib(int n)
{
if (n == || n == )
{
return ;
} int fib[];
fib[] = fib[] = ;
int idx = ;
for (int i = ; i <= n; ++i)
{
idx = (idx + ) % ;
fib[idx] = fib[(idx + )%] + fib[(idx + )%];
}
return fib[idx];
}

所以,

现在问题是如何快速计算一个矩阵的n次方。这里可以利用A^n = A^(n/2)*A^(n/2) * (n % 2 == 1 ? A : I)进行分治。
matrix power(matrix A, int n)
{
matrix ans = I;
while(n > )
{
if (n % == )
{
ans *= A;
}
A *= A;
n /= ;
}
return ans;
}
这个算法的时间复杂度是O(logN).
对于矩阵的 n 次方求解,可以通过矩阵的特征值分解来完成。过程如下:

Math: Fibonacci的更多相关文章
- 从零开始学习Node.js例子四 多页面实现数学运算
app-node.js ; var http = require('http'); var htutil = require('./htutil'); var server = http.create ...
- JUnit4单元测试入门教程
本文按以下顺序讲解JUnit4的使用 下载jar包 单元测试初体验 自动生成测试类 执行顺序 @Test的属性 下载jar包## 下载地址 在github上,把以下两个jar包都下载下来. 下 ...
- 山东省第七届ACM省赛------Fibonacci
Fibonacci Time Limit: 2000MS Memory limit: 131072K 题目描述 Fibonacci numbers are well-known as follow: ...
- Applying Eigenvalues to the Fibonacci Problem
http://scottsievert.github.io/blog/2015/01/31/the-mysterious-eigenvalue/ The Fibonacci problem is a ...
- wikioi 1973 Fibonacci数列【输出第N项的值】
/*===================================== 1978 Fibonacci数列 3 题目描述 Description 斐波纳契数列是这样的数列: f1 = 1 f2 ...
- Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数
Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...
- 斐波那契(Fibonacci)数列的七种实现方法
废话不多说,直接上代码 #include "stdio.h" #include "queue" #include "math.h" usin ...
- 蓝桥杯 入门训练 Fibonacci数列
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. ...
- 第2章 数字之魅——斐波那契(Fibonacci)数列
斐波那契(Fibonacci)数列 问题描述 递归算法: package chapter2shuzizhimei.fibonacci; /** * Fibonacci数列递归求解 * @author ...
随机推荐
- Qt---QFtp上传、下载二进制文件
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFtp> #includ ...
- LeetCode 1037. Valid Boomerang (有效的回旋镖)
题目标签:Math 题目给了我们三个点,让我们判断这三个点是否在一条直线上. 利用斜率 k = (y1 - y0) / (x1 - x0) 来判断,如果 三个点 abc, ab 的斜率 = bc 的斜 ...
- java.sql.SQLException: ORA-12704: 字符集不匹配
INFO:HibernateSimpleDao----queryForListWithSql:SELECT site_id as id ,MAX(case attr_name when 'siteNa ...
- spring-boot-configuration-processor
spring默认使用yml中的配置,但有时候要用传统的xml或properties配置,就需要使用spring-boot-configuration-processor了 引入pom依赖 <de ...
- 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll已解决
问题 : 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll 解决 1, 首先把C:\Windows\SysWOW64\的api-ms-win-crt- ...
- linux 平台安装JDK环境
1.检查一下系统中的jdk版本 [root@localhost software]# java -version 2.检测jdk安装包 [root@localhost software]# rpm - ...
- 将excel表格或csv转换为Shapefile文件
读取csv转为shp 构造读取csv函数 def read_csv(fp): ret = [] with open(fp, 'rb') as f: for line in f: ret.append( ...
- mysql 06章_分组查询和链接查询
一.分组查询 在进行查询时,通常需要按某个或某些字段进行一些统计,因此就需要使用分组查询,但分组后通常需要与聚合函数使用,分组才有意义. 语法:SELECT <字段列表|*> FROM 表 ...
- JS对象 返回星期方法 getDay() 返回星期,返回的是0-6的数字,0 表示星期天。如果要返回相对应“星期”,通过数组完成
返回星期方法 getDay() 返回星期,返回的是0-6的数字,0 表示星期天.如果要返回相对应"星期",通过数组完成,代码如下: <script type="te ...
- CodeForces - 803F
http://codeforces.com/problemset/problem/803/F #include <iostream> #include <cstdio> #in ...