k阶斐波那契数列
来源:互联网 发布:windows字体文件在哪里 编辑:程序博客网 时间:2024/05/17 06:01
描述
已知K阶斐波那契数列定义为:
f0 = 0, f1 = 0, … , fk-2 = 0, fk-1 = 1;
fn = fn-1 + fn-2 + … + fn-k , n = k , k + 1, …
利用循环队列编写求k阶斐波那契数列中前n+1项(f0, f1, f2,…, fn)的算法,要求满足:fn<=max,并且fn+1>max,其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为k,则在算法执行结束时,留在队列中的元素应是所求k阶斐波那契序列中的最后k项fn-k-1 , fn-k, …, fn)。
f0 = 0, f1 = 0, … , fk-2 = 0, fk-1 = 1;
fn = fn-1 + fn-2 + … + fn-k , n = k , k + 1, …
利用循环队列编写求k阶斐波那契数列中前n+1项(f0, f1, f2,…, fn)的算法,要求满足:fn<=max,并且fn+1>max,其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为k,则在算法执行结束时,留在队列中的元素应是所求k阶斐波那契序列中的最后k项fn-k-1 , fn-k, …, fn)。
输入
输入表示阶数的k(2<= k <= 100)以及表示某个常数的max(0 <= max <= 100000)。
输出
输出满足条件的项n(n从0开始计数),占一行;
以及第n项的值,占一行;
输出一个回车符。
以及第n项的值,占一行;
输出一个回车符。
输入样例
4 10000
输出样例
17
5536
5536
化简一下,得到迭代公式:
①:f(m)=f(m-1)+f(m-2)+…+f(m-k)
②:f(m-1)=f(m-2)+f(m-3)+…+f(m-k-1)
②:f(m-1)=f(m-2)+f(m-3)+…+f(m-k-1)
①-②: f(m)-f(m-1)=f(m-1)-f(m-k-1)
f(m)=2f(m-1)-f(m-k-1)
#include <iostream>#include <cstdio>#include <stdlib.h>#include <algorithm>#include <queue>using namespace std;int main(){int a[120];int k, m;cin >> k >> m;int i ;for(i = 0; i < k-1; i++)a[i] = 0;a[k-1] = 1;a[k] = 1;int n = k+1;if(m == 0){cout << k-2 << endl;cout << 1 << endl;return 0;}if(m == 1){cout << k << endl;cout << 1 << endl;return 0;}while(a[n-1] <= m){a[n] = 2*a[n-1]-a[n-k-1];n++;}cout << n-2 << endl;cout << a[n-2] << endl;//system("pause");return 0;}
0 0
- K阶斐波那契数列
- K阶斐波那契数列
- K阶斐波那契数列
- k阶斐波那契数列
- k阶斐波那契数列
- k阶斐波那契数列
- 【数据结构】求K阶斐波那契数列
- k阶斐波那契数列的c语言程序
- C语言——求k阶斐波那契数列的第m项
- 解斐波那契数列
- 求斐波那契数列
- 求斐波那契数列
- 递推递归专题 K 加强的斐波那契数列
- 递推递归练习K加强斐波那契数列
- 链家笔试:斐波那契数列中的第k个数
- 斐波那契数列数列计算
- 裴波那契数列
- 斐波那契数列
- 用C#来编程获取MAC
- 1001 of greedy strategy
- 基本类型与引用类型
- LoadRunner 性能测试脚本
- Hadoop版本选择探讨
- k阶斐波那契数列
- java 压缩rar文件
- 动态链接库DLL导出函数的声明和调用
- spinlock剖析与改进
- centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
- 动作系
- Java初学常用易忘
- 分页查询
- html/css学习