hud Fibonacci
来源:互联网 发布:笔记本电脑测评软件 编辑:程序博客网 时间:2024/04/30 05:01
(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。
接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。所以规定超过4位的只要说出前4位就可以了,可是CodeStar自己又记不住。于是他决定编写一个程序来测验zouyu说的是否正确。
输出f[n]的前4个数字(若不足4个数字,就全部输出)。
012345353637383940
011235922714932415390863241023
由于数据过大,运用递归的方法进行计算肯定超时,并且最终的数据也无法存储。所以这题运用公式即:f(n)=1/(5^1/2){(1+(5^1/2))^n-(1-(5^1/2))^n};由于只求前四位,因此考虑运用科学计数法表示,对公式进行化简,发现后一项始终小于一,对于结果影响甚微,可先舍去最后用精度补上。对于<=16的数,直接用公式求(f(n)小于4位),大于16的用科学技术法保留前四位,为了提高精度,采用long double(对公式计算结果有影响);丢掉后面一部分进行对数运算,会影响精度,所以最后要加上0.001;
#include<iostream>
#include<cstdio>
#include<sstream>
#include<cmath>
using namespace std;
int main(){
int n;
while(cin>>n){
long double f=(sqrt(5.0)+1)/2;
long double e=(1-sqrt(5.0))/2;
long double m=n*1.0;
if(n<=16){
long long a=(pow(f,m)-pow(e,m))/sqrt(5.0);
printf("%lld\n",a);
}
else{
double b=n*log10(f)-log10(sqrt(5.0));
double c=b-int(b)+3;
double t=10.0;
long long d=pow(t,c)+0.001;
printf("%lld\n",d);
}
}
return 0;
}
- hud Fibonacci
- hud--1021--Fibonacci Again
- HUD
- Fibonacci
- fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- UVA - 11774 Doom's Day (规律)
- 用MySQL创建数据库和数据库表
- Security
- git(含github)教程[0基础]
- 5.struts.xml配置常量和Action处理流程
- hud Fibonacci
- mysql 模糊查询
- topcoder srm 623解题报告
- 4.Struts2 result视图转发类型
- 使用archiveRootObject进行简单的归档
- new model 与 Good:model save时候的 区别
- [转载]JS中的prototype
- 1.Struts2开发环境搭建
- php ---curl