NYOJ 461
Fibonacci数列(四)
- 描述
- 数学神童小明终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。
接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。所以规定超过4位的只要说出前4位(高4位)就可以了,可是CodeStar自己又记不住。于是他决定编写一个程序来测验小明说的是否正确。
- 输入
- 输入若干数字n(0 <= n <= 100000000),每个数字一行。读到文件尾结束。
- 输出
- 输出f[n]的前4个数字(若不足4个数字,就全部输出)。
- 样例输入
-
0
1
2
3
4
5
35
36
37
38
39
40 - 样例输出
-
0
1
1
2
3
5
9227
1493
2415
3908
6324
1023
这道题首先考虑如何产生前4位:
先看对数的性质,logabc=c*logab ,loga(b*c)=logab+logac;假设给出一个数10234432,
那么log10(10234432)=log10(1.0234432*107)【用科学记数法表示这个数】=log10(1.0234432)+7;
log10(1.0234432)就是log10(10234432)的小数部分.
log10(1.0234432)=0.010063744(取对数所产生的数一定是个小数)
再取一次幂:10^0.010063744=1.023443198,然后减去整数部分,剩下的就是小数部分,让取前4位,只需要将小数部分*1000就好了。
然后根据数学知识,有斐波那契数列的通项公式:

当然,这样是不够的,需要进一步加工。
log10f(n)=n*log10((1+√5)/2)-log10√5+log10(1-((1-√5)/(1+√5))n) 红色的部分随着n的增大快速的就趋近余0,是高阶无穷小. 可以忽略。
所以:log10f(n) ≈n*log10((1+√5)/2)-log10√5
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int main(){
int n,i,a[];
double x,y,z,d;
a[]=;
a[]=;
for(i=;i<;i++)
a[i+]=a[i+]+a[i]; while(scanf("%d",&n)!=EOF){
if(n<=)
cout<<a[n]<<endl;
else{
x=( log( ( 1.0+sqrt(5.0) ) /2.0 ) / log(10.0) )*n;
y=( 0.5*log( 5.0 ) )/log(10.0);
z=(x-y)-floor(x-y); //得到log f(n)的小数部分
d=*pow(10.0,z );
cout<<floor(d)<<endl; //取整数 }
}
return ;
}
NYOJ 461的更多相关文章
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- NYOJ 333
http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...
- LeetCode:461. Hamming Distance
package BitManipulation; //Question 461. Hamming Distance /* The Hamming distance between two intege ...
- NYOJ 99单词拼接(有向图的欧拉(回)路)
/* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...
- nyoj 10 skiing 搜索+动归
整整两天了,都打不开网页,是不是我提交的次数太多了? nyoj 10: #include<stdio.h> #include<string.h> ][],b[][]; int ...
- 简答哈希实现 (nyoj 138 找球号2)
例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...
- nyoj 284 坦克大战 简单搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...
- nyoj 170 网络的可靠性
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=170 思路:统计每个节点的度,将度为1的节点消去所需要的最少的边即为答案. 代码: #in ...
随机推荐
- Java 9将采用新的版本字符串格式
在现有的版本编码格式使用了两年之后,从Java 9开始,Java版本方案将根据业内软件版本编码的最佳实践进行修改.使用或解析Java版本字符串的应用程序开发人员要注意了,因为这种变化 ...
- KMP算法-next函数求解
KMP函数求解:一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为KMP算法.KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串 ...
- Hibernate-chapter one
======什么是Hibernate???====== Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 ...
- web前端--边框的特征
1.一个面试题:边框是什么形状的? 你可能认为是一个矩形的 细心地人可能说是 梯形 或者 三角形 比较合理的答案是 非矩形的 2.画三角形 将div的width height 都设置为0px bo ...
- SpringMvc面试题
f-sm-1. 讲下SpringMvc和Struts1,Struts2的比较的优势 性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差 ...
- Logging configuration
The Play logger is built on Log4j. Since most Java libraries use Log4j or a wrapper able to use Log4 ...
- Jquery实现的简单轮播效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C语言中把数字转换为字符串 【转】
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...
- Struts2(2) —— Action
Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法 ...
- 推荐一个iOS关于颜色的库-Wonderful
Wonderful 这个库主要是与UIColor息息相连的,其中一共包含四个子文件,UIColor+Wonderful,UIColor+Separate,SXColorGradientView,SXM ...