pat basic 1017 A除以B

本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。
輸入格式:

輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:

在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3

因爲給的被除數很大,所以應該考慮用string存儲,模擬正常除數的過程:從最高位開始(手動模擬就出來了)

#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int main() {
	string a;
	int b;
	cin >> a >> b;
	if (a == "0") {
		cout << 0 << " " << 0;
		return 0;
	}
	string q = to_string((a[0] - '0') / b) == "0" ? "" : to_string((a[0] - '0') / b);//處理商數第一位爲0的情況
	int r = (a[0] - '0') % b;
	for (int i = 1; i < a.size(); i++) {
		int newa = r * 10 + (a[i] - '0');//新的被除數
		q += to_string(newa / b);
		r = newa % b;
	}
	if (q.size() == 0) q = "0";//處理商數爲0的情況
	cout << q << " " << r;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章