a248 - 新手訓練 ~ 陣列應用
題目描述
題目要求計算 a / b 的小數,精確到小數點後 N 位,並將結果輸出。a 和 b 都是正整數,N 表示要計算的小數位數。
解題思路
此題的核心是模擬手動進行除法的過程。首先,計算整數部分 a / b。然後,計算小數部分。小數部分通過不斷地將餘數乘以 10,然後除以 b 來得到每一位小數。這個過程重複 N 次,直到得到指定的小數位數。每次計算一位小數後,更新餘數。
複雜度分析
- 時間複雜度: O(N)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int a,b,r,N;
while(cin >> a >> b >> N){
r=a%b;
cout << a/b;
cout << ".";
for(;N>0;N--){
r*=10;
cout << r/b;
r=r%b;
}
cout << endl;
}
}