hdu 1568 Fibonacci
2015-07-23 12:04
302 查看
原题链接:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2§ionid=2&problemid=1
fibonacci公式:
对公式取对数:
最后一项小于0并且很小可以不用计算。
假设给出一个数10234432,
那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;
log10(1.0234432)就是log10(10234432)的小数部分.
10^0.010063744=1.023443198
代码如下:
fibonacci公式:
对公式取对数:
最后一项小于0并且很小可以不用计算。
假设给出一个数10234432,
那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;
log10(1.0234432)就是log10(10234432)的小数部分.
10^0.010063744=1.023443198
代码如下:
#include<iostream> #include<cmath> using namespace std; int main() { int fibonacci[21] = {0,1,1}; //记录前20项的值 第21项为5位数 for (int i = 2; i < 21; i++) fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]; int n; const double k = (1 + sqrt(5.0))*0.5;//常数 while (cin >> n) { if (n <= 20) { cout << fibonacci << endl; continue; } double x=-0.5*log10(5.0)+n*log10(k); x =x- floor(x); //取小数部分 x = pow(10, x); //取一次幂 cout << (int)(x * 1000) << endl; } return 0; }
相关文章推荐
- 十大编程算法
- Error creating object Please verify that the Microsoft Data Access Components 2.1 (or later) have be
- C++ transform 浅析
- IOS7 8中tableview分割线缺少15像素
- [AD]Windows 2003中对域控制器重命名
- canvas和paint常用方法
- The name ‘InitialzeComponent’ does not exist in the current context
- 单点入口
- iptables和selinux的问题
- mybatis数据库组合查询技巧
- 向网页中添加 特定位置的地图
- 百万数据查询优化
- XX小区无线WLAN信号强度-54,连接受限制处理办法
- 京东被优衣库打脸,却往阿里身上扣屎盆?
- ScaleToFit 图片如何填充屏幕
- web.xml
- [AD]域中系列改名问题收集
- centos php扩展开发流程
- GitHub 优秀的 Android 开源项目
- 爱玩iOS app基础框架解析