UVa 11809 - Floating-Point Numbers

Posted nicetomeetu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 11809 - Floating-Point Numbers相关的知识,希望对你有一定的参考价值。

十进制转二进制存储需要几位

m*2^e=a*10^b;
log10(m)+e*log10(2)=log10(a)+b;
m=1-2^(-i-1)
e=2^j-1

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
double f[10][35];
char s[100];
double a,c;
int b;
void fuc()
{
    double m=1,e;
    for(int i=0;i<=9;++i)
    {
        m/=2;
        e=1;
        for(int j=0;j<=30;++j)
        {
            f[i][j]=log10(1-m)+log10(2)*(e-1);//用log存储 
            e*=2; 
        }
    }
}
int main()
{
    fuc();
    while(~scanf("%s",s)&&strcmp(s,"0e0"))
    {
        s[17]= ;
        sscanf(s,"%lf%d",&a,&b);
        c=log10(a)+b; 
        for(int i=0;i<=9;i++)
        {
            for(int j=0;j<=30;j++)
            {
                if(fabs(c-f[i][j])<1e-7)
                {
                    cout<<i<< <<j<<endl;
                    break;
                }
            }
        }
    }
    return 0;
} 

 

以上是关于UVa 11809 - Floating-Point Numbers的主要内容,如果未能解决你的问题,请参考以下文章

2019年2月做题记录

uva是啥意思

通过vjudge刷Uva的题目(解决Uva网站打开慢的问题)

UVa中国麻将(Chinese Mahjong,Uva 11210)

uva 1583 Digit Generator(Uva-1583)

UVa12093