1. 程式人生 > >openjudge 03:八進制小數

openjudge 03:八進制小數

ram his center pri problem mat 輸出 八進制 sin

總時間限制:
1000ms
內存限制:
65536kB
描述

八進制有限小數均可以用十進制有限小數精確地表示。比如,八進制裏面的0.75等於十進制裏面的0.963125 (7/8 + 5/64)。所有小數點後位數為n的八進制小數都可以表示成小數點後位數不多於3n的十進制小數。

你的任務是寫一個程序,把(0,1)之間的八進制小數轉化成十進制小數。

輸入
一行,包含一個八進制小數。每個小數的形式是0.d1d2d3 ... dk,這裏di是八進制數0...7,dk不等於0,而且已知0 < k < 15。
輸出
輸入如下形式的一行

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


這裏左邊是輸入的八進制小數,右邊是相等的十進制小數。輸出的小數末尾不能有0,也就是說Dm不等於0。註意空格位置。
樣例輸入
0.75
樣例輸出
0.75 [8] = 0.953125 [10]
來源
翻譯自 Southern African 2001 的試題
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 double ans;
 7 char a[1001];
 8 int main()
 9 {
10     double zhishu=1;
11     double fenmu;
12     gets(a);
13 int l=strlen(a); 14 for(int i=2;i<l;i++) 15 { 16 fenmu=pow(8,zhishu); 17 zhishu++; 18 ans=ans+(double)(a[i]-48)/fenmu; 19 } 20 //cout<<a<<" [8] = "<<ans<<" [10]"; 21 printf("%s [8] = %.45g [10]",a,ans); 22 return 0; 23 }

openjudge 03:八進制小數