1017 A除以B (20 分)
本题要求计算 A / B A/B A/B,其中 A A A 是不超过 1000 位的正整数, B B B 是 1 位正整数。你需要输出商数 Q Q Q 和余数 R R R,使得 A = B × Q + R A=B×Q+R A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A A A 和 B B B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q Q Q 和 R R R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
解题思路
- 对 A A A 进行模拟除法运算 将每次得到的商储存在 Q Q Q 中 余数赋值给 R R R
- Q Q Q 的前导零最多只有一个 进行特判时只对第一位特判即可
- 注意要对 Q Q Q 只有一位的情况进行特判
AC代码
#include <iostream>
using namespace std;
int main()
{
string A, Q;
int B, R = 0;
cin >> A >> B;
for (auto &it : A)
{
Q.push_back(((it - '0' + 10 * R) / B) + '0');
R = (it - '0' + 10 * R) % B;
}
for (int i = 0; i < Q.size(); ++i)
if (!(!i && Q[i] == '0') || Q.size() == 1)
cout << Q[i];
cout << " " << R << endl;
return 0;
}