哈理工oj 1266 斐波那契数列
来源:互联网 发布:阮一峰javascript历史 编辑:程序博客网 时间:2024/06/05 09:13
定义:后一个数等于前两个数之和的数列。
要求:已知出三个正整数n、m、k(0<=n、m<=10,1<=k<=89),计算出以n、m开头的斐波那契数列中第k个数的大小。
Input
输入包含多组测试用例。
每组测试用例要求输入三个整数n、m、k。
Output对于每组测试用例,输出一个整数作为结果。
Sample Input0 1 2
Sample Output1
Source2012 Winter Holiday Contest 4 - Water BattleAuthor卢俊达
这道题很明显是道基础题,只要把存储的数组的数据类型变为 unsigned long long,就行了,但是为什么不能改为double呢,这就是我写这篇博客的原因,因为数据过大,如果用double的话,那么必然会导致精度缺失,为什么呢,原因如下:
1,因为double类型是浮点数,这种类型可以用科学记数法表示,所以表示范围非常大。
但是,使用可浮点数的代价就是损失了精度。它把这部分精度用于指数的表示。
所以double类型的优点就是数据范围大,缺点是精度不足,大概只有15~16位有效位数。
2,它表示大数的代价就是损失了精度。举个例子:假设我有0-9这10个数,我定义数n表示5n,那么这10个数最大能表示5*9=45。
能表示的范围是:0、5、10、15、20、25、30、35、40、45。最小值为0,最大值为45。所以表示的范围是:0~45。
但1、2、3、4,......,41,42,43,44这些不是5的倍数的数就没法精确表示了,只能在定义中把它们靠向0、5、......、40或者45。
这就是为了扩大表示范围而损失了表示精度。
Oracle NUMBER类型的最大字符个数是38
所以,Oracle NUMBER能表示的最大整数为:a = 99999999999999999999999999999999999999(38个9)
如果转换成DOUBLE,会丢失精度,用DOUBLE存储以后,实际的结果为:b = 1E38 即 10^38 = 100000000000000000000000000000000000000
显然:a ≈ b
但b不是我们期待的值,除非实际应用场景能够认可。
所有Oracle NUMBER不能简单的转为DOUBLE存储,会丢失精度。
转自:
http://m.blog.csdn.net/sunny05296/article/details/69337705
- 哈理工oj 1266 斐波那契数列
- 山东理工OJ 1132 C/C++经典程序训练2---斐波那契数列
- 山东理工大3561 斐波那契数列
- 哈理工OJ 1151 追求(斐波那契变形【思维题目】)
- 九度OJ 题目4:斐波那契数列
- 九度OJ 题目1075:斐波那契数列
- 九度OJ 1075: 斐波那契数列
- 九度OJ 1387 斐波那契数列
- 九度OJ题目1075:斐波那契数列
- 九度oj-1075-斐波那契数列
- 九度OJ-题目1387:斐波那契数列
- 南邮 OJ 1003 斐波那契数列
- 九度OJ 题目1075:斐波那契数列
- 九度oj-1387-斐波那契数列
- 南邮OJ 1003 斐波那契数列
- 九度oj-1075-斐波那契数列
- 由递推公式求数列第n项的值/山理工ACM-1689斐波那契?
- 斐波那契数列数列计算
- Binary Number with Alternating Bits
- 字符串与时间的转换
- docker swarm如何在指定的node上运行指定的容器
- 根据递推式构造矩阵
- 【SSH工具】FinalShell|—服务器管理软件,远程桌面加速工具,支持Windows,Mac OS X,Linux
- 哈理工oj 1266 斐波那契数列
- TensorFlow栗子:生成式对抗网络应用在mnist
- RS-485总线通信协议
- 51Nod-1573-美丽的集合
- Temporal Action Proposal 论文分享
- 对jquery mobile的学习过程一
- 安卓模拟器
- NOIP2017 模拟考试 day2 2017.10.07
- tomcat集群搭建