本题要求计算 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
解题思路:
模拟手动除法:每次用第一位去除以B,如果得到的商不是0就输出,否则就*10+下一位,直到最后的数为余数
答案代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main() {
string s;
int divisor = 0, result = 0, temp = 0;
cin >> s >> divisor;
int len = s.size();
result = (s[0] - '0') / divisor;
temp = (s[0] - '0') % divisor;
if ((result != 0 && len > 1) || len == 1)
cout << result;
for (int i = 1; i < len; i++) {
result = (temp*10 + s[i] - '0') / divisor;
temp = (temp*10 + s[i] - '0') % divisor;
cout << result;
}
cout << " " << temp;
return 0;
}