鏈接: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) {
...
}
代碼:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> octal[ (cin >> sum = step = length = ( i = ; i < length; i++ sum += (octal[i] - ) * step = step * printf( }
思路:
1.用%0.45g解決精度問題