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