杭电ACM1568——Fibonacci

原创 2015年11月19日 15:41:14

巧用数学公式,两边去对数来算。

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	int n;
	int fib[21] = {0, 1, 1};
	for(int i = 3; i < 21; i++)
		fib[i] = fib[i - 1] + fib[i - 2];
	while(cin >> n)
	{
		if(n <= 20)
			cout << fib[n] << endl;
		else
		{
			double ans = -0.5 * log10(5.0) + n * log10((1.0 + sqrt(5)) / 2.0);
			ans = ans - floor(ans);
			ans = pow(10, ans);
			cout << (int)(ans * 1000) << endl;
		}
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ACM-Fibonacci数

描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为 F(n)=1 ...........(n=1或n=2) F(n)=F(n-1)+F...

HDU 1568 Fibonacci(数学 递推式)

HDU 1568 Fibonacci(数学 递推式)

HDU-1568 Fibonacci

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 解题思路: 一遇到数学题就悲剧!! 我了个去啊!!!啥时候才能用公式瞬秒数学题啊。。。每次...

【杭电oj】1568 - Fibonacci(数学)

Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...
  • wyg1997
  • wyg1997
  • 2016年04月09日 17:04
  • 413

HDU ACM Fibonacci Again 解题报告

我是个没有耐心的人,曾经玩过acm,不过感觉太无聊就没在继续,现在趁学校有专门开这个课,就把它继续下去,当年没解决的好多题目现在都能够懂了,比如说这个,当年就是在这个题解不出并且看不懂别人的结题报告以...
  • wlmnzf
  • wlmnzf
  • 2014年10月06日 21:47
  • 1038

杭电 HDU ACM 1708 Fibonacci String

Fibonacci String Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...
  • lsgqjh
  • lsgqjh
  • 2015年04月08日 00:45
  • 542

杭电ACM1074——Doing Homework~~状态压缩DP

题目的意思:N门课程有作业,一个时间是最迟交的时间,一个是需要耗费多少时间来完成,到了期限,迟交多少,就扣多少分,求扣最少分的做作业的顺序。 N小于等于15,可以枚举所以的情况,数的二进制来表示各种情...

杭电ACM1277——全文检索~~AC自动机算法

题目的意思:给你一篇文章,再给你T个字符串,判断这T个字符串有哪些在文章中出现过。 由于文章很大,普通的方法必定超时,所以需要用 AC自动机算法。 AC自动机算法是多模匹配算法之一,主要是用于在一...

杭电ACM1242——Rescue~~BFS+优先队列

这题,简单的BFS就可以搞定。题目的大概意思是最短时间从地图的r到达a。 一开始,用普通的队列来做,结果内存超了,原因是N和M最大200;普通的队列会浪费一大堆内存,所以应该改用优先队列来做。 下...

杭电ACM1372——Knight Moves~~BFS

题目的意思是:国际象棋的棋盘的列是 a ~ h ,横向是 1 ~ 8 。问一个骑士葱一个位置上到另外一个位置上的最少的步数。 国际象棋的骑士的走法跟中国象棋的马的走法一样,所以,一个位置上,有8个位...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:杭电ACM1568——Fibonacci
举报原因:
原因补充:

(最多只允许输入30个字)