九度oj1387求Fibonacci数列第n项
来源:互联网 发布:vb中怎么加密输入 编辑:程序博客网 时间:2024/06/03 18:22
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1656
解决:467
- 题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:
- 输入:
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
- 输出:
对应每个测试案例,
输出第n项斐波那契数列的值。
- 样例输入:
3
- 样例输出:
2
//用矩阵乘法解决Fibonacci,这个题直接将Fibonacci数列存在数组里,用for循环赋值也可以解决,要注意的是数据类型也要是long long
#include<iostream> using std::cin; using std::cout; using std::endl; int main() { int k,kk; long long t1,t2,t3,t4; long long M00,M01,M10,M11; long long temprow1,row1,row2; while(cin>>k) { if(k==1) { cout << 1 << endl; continue; } M00=1,M01=1,M10=1,M11=0; row1=1,row2=0; kk=k-1; while(kk>=1) { if(kk%2==0) { //临时矩阵存当前分割时的矩阵,分割矩阵次数递增 t1=M00*M00+M01*M10; t2=M00*M01+M01*M11; t3=M10*M00+M11*M10; t4=M10*M01+M11*M11; M00=t1; M01=t2; M10=t3; M11=t4; kk/=2; } else { temprow1=row1;//没有temprow1就eggs broken吧 row1=M00*row1+M01*row2; row2=M10*temprow1+M11*row2; --kk; } } cout << row1 << endl; } return 0; } /************************************************************** Problem: 1387 User: true14fans Language: C++ Result: Accepted Time:10 ms Memory:1520 kb ****************************************************************/
- 九度oj1387求Fibonacci数列第n项
- 求Fibonacci数列的第n项
- 求Fibonacci数列的第n项
- 递归实现求Fibonacci数列的第n项
- 定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
- 求 Fibonacci数列前n项之和....
- 输入n,用最快的方法求Fibonacci 数列的第n 项
- 【微软100题】输入n,用最快的方法求Fibonacci数列的第n项
- 求Fibonacci数列的第N个数字
- 19.定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
- 5-2编写递归函数求Fibonacci数列的第n项
- 函数递归法求fibonacci数列中第n项的值
- 编码实现求 fibonacci 数列的第 n 项。已知 f1 = 1, f2 = 1。
- Fibonacci数列第n项的log(n)算法
- 递归求fibonacci的第n项
- 求Fibonacci数量的第N项
- <仅是自己做笔记。。。系列-11>输入n,用最快的方法求Fibonacci数列的第n项。
- C语言:求Fibonacci数列的前n项和
- IOS动画简介
- mysql find_in_set
- object-c 网络(中)
- Linux常用指令(幻影快递Linux小组)
- Oracle中的in和exists区别
- 九度oj1387求Fibonacci数列第n项
- AIX的vmstat命令详解
- 漫谈中国软件(中)
- 查找弹窗软件的全路径名称
- 项目沟通案例(一)
- hibernate+spring 连接多个数据库,动态切换(多帐套)的实现
- 一个局部静态对象问题 static Cleaner cl; //延迟到这里
- 浅谈fastDFS
- make报错:"/usr/bin/ld: cannot find -lXXX"