矩阵专题:斐波那契数列
2014-04-26 00:03
183 查看
题目描述:
计算斐波那契数列第n项的后四位。
大致思路:
斐波那契数列具有以下性质。(由行列式推倒得出)
这样就可以类似二分的方法求出Fn,只是因为相邻两项性质不可找,所以有重复计算,所以用map优化一下,把计算过的Fn存起来,之后每次直接在map中寻找即可。
代码:
#include <iostream>
#include <map>
using namespace std;
map<int, int> m;
int f(int n) {
if (n == 1) return 1;
else if (n == 2) return 1;
else if (!n) return 0;
else if (n == 3) return 2;
else if (n == 4) return 3;
if (n%2) {
int r = n/2, k = r+1;
int a,b;
if (m.count(r)) a = m[r];
else {
a = f(r);
m[r] = a;
}
if (m.count(k)) b = m[k];
else {
b = f(k);
m[k] = b;
}
return (a*a%10000+b*b%10000)%10000;
}
else {
int r = n/2, k = r-1, l = r+1;
int a,b,c;
if (m.count(r)) a = m[r];
else {
a = f(r);
m[r] = a;
}
if (m.count(k)) b = m[k];
else {
b = f(k);
m[k] = b;
}
c = (a+b)%10000;
m[l] = c;
return (a*b%10000+a*c%10000)%10000;
}
}
int main() {
m.clear();
int n;
while (cin>>n, n != -1) {
cout<<f(n)<<endl;
}
}
计算斐波那契数列第n项的后四位。
大致思路:
斐波那契数列具有以下性质。(由行列式推倒得出)
这样就可以类似二分的方法求出Fn,只是因为相邻两项性质不可找,所以有重复计算,所以用map优化一下,把计算过的Fn存起来,之后每次直接在map中寻找即可。
代码:
#include <iostream>
#include <map>
using namespace std;
map<int, int> m;
int f(int n) {
if (n == 1) return 1;
else if (n == 2) return 1;
else if (!n) return 0;
else if (n == 3) return 2;
else if (n == 4) return 3;
if (n%2) {
int r = n/2, k = r+1;
int a,b;
if (m.count(r)) a = m[r];
else {
a = f(r);
m[r] = a;
}
if (m.count(k)) b = m[k];
else {
b = f(k);
m[k] = b;
}
return (a*a%10000+b*b%10000)%10000;
}
else {
int r = n/2, k = r-1, l = r+1;
int a,b,c;
if (m.count(r)) a = m[r];
else {
a = f(r);
m[r] = a;
}
if (m.count(k)) b = m[k];
else {
b = f(k);
m[k] = b;
}
c = (a+b)%10000;
m[l] = c;
return (a*b%10000+a*c%10000)%10000;
}
}
int main() {
m.clear();
int n;
while (cin>>n, n != -1) {
cout<<f(n)<<endl;
}
}
相关文章推荐
- nyoj 1000 又见斐波那契数列 (矩阵+费马小定理)
- 斐波那契数列谈矩阵(1)
- 快速计算类似斐波那契数列数列的数列的第N项,矩阵快速幂
- 分治策略(归并排序,二分查找,x的n次方,斐波那契(Fibonacci)数列,斯特拉森(Strassen)矩阵乘法)
- 斐波那契数列解法,矩阵解法,学习
- 斐波那契数列 打表+矩阵快速幂
- 斐波那契数列的第 n 项 mod 1000000007(矩阵乘法)
- 斐波那契数列 矩阵求法 优化
- 斐波那契数列——矩阵的幂求解
- 洛谷1349 广义斐波那契数列 【矩阵乘法】
- 斐波那契数列-专题讲解
- 洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]
- 斐波那契数列 矩阵求法 优化
- 斐波那契数列数组递推,普通递归,记忆化搜索,矩阵快速幂,和公式法
- 斐波那契数列与黄金分割比以及矩阵形式推导
- 矩阵乘法解fibonacci斐波那契数列
- 斐波那契数列的矩阵推导(看不懂的可以放弃矩阵了)
- 【矩阵乘法】广义斐波那契数列
- 斐波那契数列的矩阵分治求法java实现
- 二分法矩阵求斐波那契(fibonacci)数列第n项