#40839: 解答 c++


hs210023@students.hshs.chc.edu ... (天底下最帥的那個男人)

學校 : 不指定學校
編號 : 274462
來源 : [39.9.190.55]
最後登入時間 :
2024-06-17 21:52:54
a248. 新手訓練 ~ 陣列應用 -- 新手訓練系列 ~ 2 | From: [27.247.62.93] | 發表日期 : 2024-06-14 19:22

為了實現精確的小數運算,我們需要處理大數運算並且能夠精確到小數點後多位。C++ 中可以使用字串來模擬大數運算,這樣可以避免浮點數運算精度不足的問題。

 

以下是實現這個功能的 C++ 程式碼:

 

C++ 程式碼

 
#include <iostream>
#include <string>
#include <vector>
using namespace std;

void divide(int a, int b, int N) {
    string result;
    int integerPart = a / b;
    result = to_string(integerPart) + ".";

    a = a % b;
    for (int i = 0; i < N; ++i) {
        a *= 10;
        int digit = a / b;
        result += to_string(digit);
        a = a % b;
    }

    cout << result << endl;
}

int main() {
    int a, b, N;
    while (cin >> a >> b >> N) {
        divide(a, b, N);
    }
    return 0;
}

 

說明

 

  1. **函數 divide**:
    • 參數 a 是被除數,b 是除數,N 是小數點後需要的精度。
    • 首先計算整數部分,並將其轉換為字串並加上小數點。
    • 然後進行小數部分的計算,通過模擬手工除法來逐位計算小數部分。
    • 將每一位結果追加到結果字串中,直到達到所需的精度 N
  2. 主程式
    • 不斷讀取輸入的三個正整數 abN
    • 調用 divide 函數進行計算並輸出結果。

 

測試

 

你可以將這段程式碼複製到本地的C++編譯器中進行測試,並輸入範例資料,檢查輸出結果是否正確。如果有任何問題或需要進一步的調整,請告訴我。
 
ZeroJudge Forum