【习题 3-12 UVA - 11809】Floating-Point Numbers
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
$A*10^B = temp[M]*2^{2^E-1}$
两边取一下对数
得到
$lg_A+B = lg_{temp[M]} + (2^E-1)*lg_2$
这样就不至于算不出来啦。
打个表就好
防止爆精度。
加个long double.
【代码】
#include <bits/stdc++.h>
using namespace std;
string s;
long double two[20];
long double temp[20];
long long temp2[70];
long double ans[100][100];
int main(){
#ifdef LOCAL_DEFINE
freopen("F:\\c++source\\rush_in.txt", "r", stdin);
#endif
two[1] = 0.5;
for (int i = 2;i <= 12;i++){
two[i] = two[i-1]*0.5;
}
temp[0] = two[1];
for (int i = 1;i <= 9;i++) temp[i] = temp[i-1] + two[i+1];
temp2[0] = 1;
for (int i = 1;i <= 30;i++) temp2[i] = temp2[i-1] * 2;
for (int i = 0;i <= 9;i++){
double M = temp[i];
for (int j = 1;j <= 30;j++){
ans[i][j] = log10(M) + (temp2[j]-1)*log10(2);
}
}
while (cin >> s){
int len = s.size();
for (int i = 0;i < len;i++) if (s[i]=='e') s[i] = ' ';
long double A;
long long B;
stringstream ss(s);
ss >> A >> B;
if (A==0 && B==0) break;
double temp = log10(A)+B;
bool fi = false;
for (int i = 0;!fi && i <= 9;i++)
for (int j = 1;!fi && j <= 30;j++)
if (fabs(ans[i][j]-temp)<1e-6){
printf("%d %d\n",i,j);
fi = true;
}
}
return 0;
}
【习题 3-12 UVA - 11809】Floating-Point Numbers的更多相关文章
- 最小正子序列(序列之和最小,同时满足和值要最小)(数据结构与算法分析——C语言描述第二章习题2.12第二问)
#include "stdio.h" #include "stdlib.h" #define random(x) (rand()%x) void creat_a ...
- uva 10712 - Count the Numbers(数位dp)
题目链接:uva 10712 - Count the Numbers 题目大意:给出n,a.b.问说在a到b之间有多少个n. 解题思路:数位dp.dp[i][j][x][y]表示第i位为j的时候.x是 ...
- UVA 10539 - Almost Prime Numbers(数论)
UVA 10539 - Almost Prime Numbers 题目链接 题意:给定一个区间,求这个区间中的Almost prime number,Almost prime number的定义为:仅 ...
- UVA 11809 - Floating-Point Numbers
数学太渣了,这道题反复参考了大神的博客,算是看懂了吧.博客原文 http://blog.csdn.net/crazysillynerd/article/details/43339157 算是个数学题 ...
- 【每日一题】 UVA - 11809 Floating-Point Numbers 阅读题+取对数处理爆double
https://cn.vjudge.net/problem/UVA-11809 题意:很长orz 题解:算一下输入范围,发现用double是读不进来的,在这里wa了半天,(double 1e300 ...
- UVA 11481 - Arrange the Numbers 数学
Consider this sequence {1, 2, 3, . . . , N}, as a initial sequence of first N natural numbers. You ca ...
- 【UVA - 136】Ugly Numbers(set)
Ugly Numbers Descriptions: Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequ ...
- UVA 10539 - Almost Prime Numbers 素数打表
Almost prime numbers are the non-prime numbers which are divisible by only a single prime number.In ...
- comparison of floating point numbers with equality operator. possible loss of precision while rounding values
double值由外部传入 private void Compare(double value) { string text; ) //小数位后保留2位 { //小数点后保留2位小数 text = st ...
随机推荐
- mongodb官网文档阅读笔记:write concern
write concern保证了mongodb写操作的级别,不同的write concern设置相应了不同级别的写操作.设置的级别越高.那么写操作的性能的持久化做得越好,可是写性能也就越差. mong ...
- C#接口,类,集成
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Android学习笔记进阶18 之画图并保存图片到本地
1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...
- 计算加班类型以及小时数(js)
function GetDateDiff(startTime, endTime, diffType) { //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 startTime ...
- 博弈论 SG函数(模板) HDU 1848 Fibonacci again and again
Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- POJ 1269 Intersecting Lines 直线交
不知道谁转的计算几何题集里面有这个题...标题还写的是基本线段求交... 结果题都没看就直接敲了个线段交...各种姿势WA一遍以后发现题意根本不是线段交而是直线交...白改了那个模板... 乱发文的同 ...
- xsy3320 string
xsy3320 string 题意: 给一颗树,每条边上有一个字符,求有多少条路径是回文的.(\(N\leq50000\),\(c\in\{1,2\}\)) 题解: 前置芝士:回文前缀& ...
- VS Code 关于SFTP上传文件到多服务器的配置
工欲善其事,必先利其器! 刚学前端的时候一直用的DW来编写代码,其功能非常强大,但在Linux下不能用,所以就转VS Code了. 但是刚开始使用VS Code的时候,很多DW上的功能需要自己安装扩展 ...
- 通过 chroot 重新设置 root 密码
实例:通过 chroot 重新设置 root 密码 忘记了 root 密码该怎么办?接下来的 demo 将演示如何通过 chroot 命令重新设置 centos7 中被忘记了的 root 密码.sys ...
- CMDB学习之二数据采集
首先也要调用插件的方式,来写采集数据插件,在src目录下创建一个插件 plugins ,然后在plugins下创建disk.py ,memory.py, network.py等等 src plugin ...