hdu 1568 Fibonacci
来源:互联网 发布:微博来自mac客户端 编辑:程序博客网 时间:2024/05/01 07:56
http://acm.hdu.edu.cn/showproblem.php?pid=1568
先说n较大的情况:
这里会用到斐波那契的通项公式:
取对数可得,
结果设为logg,其中第三项很小且趋向于0,所以省略。将logg舍去整数部分后再作为10的指数,可以得到f(n)不断除以10得到的小于10的形式,设为ans。这题要求前4位,只要把ans再乘到大于等于1000后取整数部分即可。
而n较小时(如当n<=20时)为了避免省略了第三项的误差,就直接用用递推公式求。
#include <iostream>#include <stdio.h>#include <cmath>using namespace std;const double tmp = (1.0+sqrt(5.0))/2.0;int f(int x){ if(x==0) return 0; if(x==1) return 1; return f(x-1)+f(x-2);}int main(){ int n; while(scanf("%d",&n)!=EOF) { if(n<=20) printf("%d\n",f(n)); else { double logg = -0.5*log10(5.0) + n*log10(tmp); logg -= floor(logg); double ans = pow(10.0,logg); while(ans<1000) ans *= 10; printf("%d\n",(int)ans); } } return 0;}
0 0
- HDU 1568 Fibonacci
- HDU 1568 Fibonacci
- Fibonacci Hdu 1568
- HDU 1568 - Fibonacci
- HDU-1568 Fibonacci
- HDU 1568 Fibonacci
- HDU 1568 Fibonacci
- HDU 1568 Fibonacci
- HDU 1568 Fibonacci
- hdu 1568 Fibonacci
- Hdu 1568 Fibonacci
- HDU 1568 Fibonacci
- Fibonacci hdu 1568
- hdu 1568 Fibonacci
- HDU 1568 Fibonacci 数论
- hdu 1568 Fibonacci
- hdu 1568 Fibonacci
- hdu - 1568 fibonacci
- TCP、http的keepalive
- 操作系统调度算法(上)
- 线段树
- c#遍历文件夹和文件
- java多线程
- hdu 1568 Fibonacci
- QDUOJ 39 - 签到题(线段树)
- React和Redux的连接react-redux
- 杭电1213How Many Tables
- ios 数组里面的对象都执行一个方法
- GetLastError简介及返回值列表
- 设计模式-工厂方法模式
- HDU Problem 5326 Work 【并查集】
- fatal error: unexpectedly found nil while unwrapping an Optional value