uva - 11809 - Floating-Point Numbers
2015-09-26 09:12
330 查看
传送门:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2909
由于M和E的取值范围很小,一共就有300种情况,可以先计算出所有的情况,打个表,然后查表就行了。另外,浮点数比较大小有误差,所有在比较浮点数的时候,只要两个数的差小于1e-5就可以认为相等了。
代码
由于M和E的取值范围很小,一共就有300种情况,可以先计算出所有的情况,打个表,然后查表就行了。另外,浮点数比较大小有误差,所有在比较浮点数的时候,只要两个数的差小于1e-5就可以认为相等了。
代码
[code]#include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; double M[11][33]; long long E[11][33]; void solve(double m,long long e); int main() { int i, j; double m, t; long long e; char str[22]; for(i = 0; i <= 9; i++) for(j = 1; j <= 30; j++) { e = (1 << j) - 1; m = 1 - 1.0 / (1 << (i + 1)); t = log10(m) + e * log10(2); E[i][j] = t / 1; M[i][j] = pow(10, t - E[i][j]); } while(cin >> str, strcmp(str,"0e0")) { *(strchr(str,'e')) = ' '; sscanf(str,"%lf %lld", &m, &e); solve(m, e); } return 0; } void solve(double m,long long e) { int i, j; for(i = 0; i <= 9; i++) for(j = 1; j <= 30; j++) if(e == E[i][j] && fabs(m - M[i][j]) < 1e-5) { cout<<i<<" "<<j<<endl; return; } }
相关文章推荐
- 盛坤珠宝 私人珠宝定制 您的美丽工厂
- js 数组删除指定元素
- 不用递归,使用栈实现快速排序(非常好理解)
- POJ 3020 Antenna Placement
- C++中的头文件和源文件
- 数据库SQL Server 2008版本升级问题
- struts2中文件上传与下载
- 免费真机调试 -- Xcode7
- 动态规划——背包问题
- TI会议
- Java核心技术第3章(3)
- javascript页面打印技术
- HDU 4777 Rabbit Kingdom(树状数组)
- 洛谷1164 小A点菜
- test7.19
- leetcode 277: Find the Celebrity
- dsp/bios初步了解
- 往年百度PC客户端研发笔试题(2)
- ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章 ASM instance(1)
- memcpy 函数