zoukankan      html  css  js  c++  java
  • ZOJ 1806 (小数高精度)

    题意:八进制小数转化成十进制的小数。    

                    0.d1d2d3 ... dk [8] = 0.D1D2D3 ... Dm [10]


    例:

        0.75 [8] = 7*8^-1+5*8^-2 = ( 5/8 + 7 ) / 8 = 0.953125 [10]


    算法:主要就是实现上面的秦九韶算法。


    实现:模拟手算除法:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    
    using namespace std;
    
    const int N=100000;
    char num_2[N];
    char num_10[N];
    
    
    int main()
    {
        while(scanf("%s",num_2)!=EOF)
        {
            memset(num_10,0,sizeof num_10);
            int index=0;
            int len=strlen(num_2);
            for(int i=len-1;i>=2;i--)
            {
                int j;
                int digit=num_2[i]-'0';
                for(j=0;j<index||digit;j++)
                {
                    digit=digit*10+(j<index?num_10[j]-'0':0);
                    num_10[j]=digit/8+'0';
                    digit%=8;
                }
                index=j;
            }
            num_10[index]='';
            printf("%s [8] = 0.%s [10]
    ",num_2,num_10);
        }
    
        return 0;
    }
    



    
  • 相关阅读:
    原型与原型链
    数据类型与计算
    JavaScript实现版本号比较
    vue依赖
    vue
    面试经验
    第十一节课 课堂总结
    第十一次作业
    第十课课堂总结
    第十次作业
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6889458.html
Copyright © 2011-2022 走看看