UVA - 11809 Floating-Point Numbers

来源:互联网 发布:java 设计模式 书籍 编辑:程序博客网 时间:2024/04/29 09:21

//

第三章的最后一道题, 当时没敢看, 也是醉了。 后来ACM群里讨论了, 有点印象, 现在仔细看也不是很难。

//

1、那个样例的第二个A(算法入门)是0.5*1+0.5/2+0.5/2/2 +0.5/...2(除八个二), 这是计算机的储存方式。 仅仅知道这里而已。

2.INF要取到10的-4-6都行, 但是10的-10不行。

3.两边对数, 打表, 直观。

<pre name="code" class="cpp">#include <iostream>#include <cstdio>#include <string.h>#include<math.h>#include<algorithm>const int maxn = 30 + 5;const double INF = 1e-6;using namespace std;const int E[maxn] = {0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383,32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215, 33554431,67108863, 134217727, 268435455, 536870911, 1073741823};const double M[maxn] = {0.5, 0.75, 0.875, 0.9375,0.96875, 0.984375, 0.9921875, 0.99609375, 0.998046875,0.9990234375, 0.99951171875};char str[maxn];int main(){    while(scanf("%s", str) && strcmp(str, "0e0") != 0)    {        *(strchr(str, 'e')) = ' ';        int EE, B;        double MM, A, BB;        sscanf(str, "%lf %d", &A, &B);        BB = log10(A) + B;        for(int i = 0; i <= 9; i++)        {            for(int j = 1; j <= 30; j++)            {                if(fabs( (log10(M[i]) + E[j] * log10(2)) - BB) < INF)                {                    printf("%d %d\n", i, j);                    break;                }            }        }    }    return 0;}


                                             
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脚磕到了肿了怎么办 脚碰到了肿了怎么办 腿被车子撞肿了怎么办 肛门长了小疙瘩怎么办 屁眼长了个包怎么办 屁股上长了个肉球怎么办 过敏了全身都痒怎么办 吃了螃蟹全身痒怎么办 全身痒眼睛肿了怎么办 感染了hpv病毒怎么办16 高危型hpv阳性52怎么办 腰椎盘突出腿疼怎么办 腰椎间盘突出压迫神经怎么办 疣体长到宫颈了怎么办 龟头的系带断了怎么办 龟头与系带断了怎么办 舌头下长肉芽痛怎么办 脑组织供血不足怎么办 尖锐湿锐喝酒了怎么办 快递寄错地方了怎么办 16岁掉头发严重怎么办 18岁老是掉头发怎么办 17岁头发老是掉怎么办 19岁老是掉头发怎么办 植发的了毛囊炎怎么办 长得好看不上镜怎么办 鬓角的头发总翘怎么办 戴贞洁锁硬了怎么办 欠很多钱还不了怎么办 理财平台跑路了怎么办 联通4g信号不好怎么办 老年人耳朵嗡嗡响什么原因怎么办 单侧耳朵嗡嗡响怎么办 蚊子钻到耳朵里怎么办 小飞虫进耳朵里怎么办 耳朵里飞进去虫怎么办 耳朵里进虫子了怎么办 耳朵进虫子了怎么办啊 耳朵里进了蚊子怎么办 有虫子爬进耳朵怎么办 虫子死在耳朵里怎么办