# Greedy# Arithmetic# Simulation

a248 - 新手訓練 ~ 陣列應用

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算 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;
	}
}

Discussion