大家都知道,小算盤的小數運算只能算出小數點後三十幾位
但好奇的桑葉想知道更精準的小數值
請你幫可憐的桑葉做出可以算出精準的小數運算的程式
範例測資
範例輸入 | 範例輸出 |
---|---|
EOF 輸入,每次輸入有三個正整數 a , b , N 1<= a , b <= 2147483647 1 <= N <= 10000 (輸入不會超過1000筆) | 請輸出 a / b 的小數運算結果 精準到小數點後N位 第N位以後請無條件捨去 |
18467 41 10 26500 6334 10 15724 19169 10 10 5 3 | 450.4146341463 4.1837701294 0.8202827481 2.000 |
解題思路
本題如使用cin需先優化避免超時。因為不能使用 Printf 來指令小數點的位數,所以輸出完整數的答案之後要跑N次For迴圈來計算 a/b 之後的小數點位數的值,將 a 與 b 取餘數之後再將 a 乘以 10,同時輸出 a/b。
範例程式碼-ZeroJudge A248: 新手訓練 ~ 陣列應用
#include <iostream>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(nullptr);
int a, b, N;
while (cin >> a >> b >> N)
{
cout << a/b << ".";
for (int i = 0; i<N; i++)
{
a %= b;
a *= 10;
cout << a/b;
}
cout << "\n";
}
}
//ZeroJudge A248
//Dr. SeanXD