總時間限制:
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.750.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)
這道題應該屬於基礎題了,剛開始看到這到題的時候,以為是高精度的題,開始都不敢用double來做,後來看到那個那個8進製數的範圍才15,所以想到double也應該能夠做吧,參考了一下別人的思路,好巧妙啊,直接通過字串倒序處理,把8進製小數轉化為十進位制的整數,值得學習啊~
以下是**。好簡短的,主要是要掌握這樣的思路,這樣的巧妙的寫法;
和曾經我們普通的求法不一樣;
0.75(8)=5/64+7/8;
#include #include int main()
n/=double(8.0);//小數點前那乙個還沒處理
printf("%s",s);
printf(" [8] = %.45g [10]\n",n);//%g指代浮點數,去掉無意義的零
}return 0;
}
百練 2765八進位制小數
總時間限制 1000ms 記憶體限制 65536kb 描述八進位制有限小數均可以用十進位制有限小數精確地表示。比如,八進位制裡面的0.75等於十進位制裡面的0.963125 7 8 5 64 所有小數點後位數為n的八進位制小數都可以表示成小數點後位數不多於3n的十進位制小數。你的任務是寫乙個程式,把...
百練 2765 八進位制小數
描述 八進位制有限小數均可以用十進位制有限小數精確地表示。比如,八進位制裡面的0.75等於十進位制裡面的0.963125 7 8 5 64 所有小數點後位數為n的八進位制小數都可以表示成小數點後位數不多於3n的十進位制小數。你的任務是寫乙個程式,把 0,1 之間的八進位制小數轉化成十進位制小數。輸入...
百練2765八進位制小數題解
總時間限制 1000ms 記憶體限制 65536kb 描述 八進位制有限小數均可以用十進位制有限小數精確地表示。比如,八進位制裡面的0.75等於十進位制裡面的0.963125 7 8 5 64 所有小數點後位數為n的八進位制小數都可以表示成小數點後位數不多於3n的十進位制小數。你的任務是寫乙個程式,...