百练 2765 八进制小数 解题呈报

    添加时间:2013-5-25 点击量:

    链接:http://poj.grids.cn/practice/2765/


    题目:


    总时候限制:
    1000ms
    内存限制:
    65536kB
    描述
    八进制小数可以用十进制小数正确的默示。比如,八进制里面的0.75便是十进制里面的0.963125 (7/8 + 5/64)。所有小数点后位数为n的八进制小数都可以默示成小数点后位数不久不多于3n的十进制小数。

    你的任务是写一个法度,把(0, 1)中的八进制小数转化成十进制小数。
    输入
    输入包含若干八进制小数,每个小数占用一行。每个小数的情势是0.d1d2d3 ... dk,这里di是八进制数0...7,并且已知0 < k < 15。
    输出
    对于每个输入的八进制小数,输入如下情势的一行

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


    这里左边是输入的八进制小数,右边是相等的十进制小数。输出的小数末尾不克不及有0,也就是说Dm不便是0。
    样例输入

    0.75
    
    0.0001
    0.01234567

    样例输出

    0.75 [8] = 0.953125 [10]
    
    0.0001 [8] = 0.000244140625 [10]
    0.01234567 [8] = 0.020408093929290771484375 [10]

    提示
    若是你应用字符串读取八进制小数,你可以应用如下的情势中断输入

    char octal[100];
    while(cin >> octal) {
    ...
    }

    代码:



     1 #include <iostream>
    
    2 #include <cstdio>
    3 #include <cstdlib>
    4 #include <cstring>
    5 using namespace std;
    6 int main()
    7 {
    8 //freopen(F:\\input.txt,r,stdin);
    9
    10 char octal[100];
    11 while(cin >>octal)
    12 {
    13 double sum = 0.0;
    14 double step = 0.125;
    15 int length = strlen(octal);
    16 forint i = 2; i < length; i++
    17 {
    18 sum += (octal[i] - 0 step;
    19 step = step 0.125;
    20 }
    21
    22 printf(%s [8] = %0.45g [10]\n,octal,sum);
    23 }
    24
    25 return 0;
    26 }



    思路:


    1.用%0.45g解决精度题目

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: