题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <stack>
#include <queue>
using namespace std;
char s[1002];//保存输入的被除数
char t[1002];//保存商
int main() {
int n, m;
int j = 0;
cin >> s >> m;
int len = strlen(s);
int i = 0;
if (len == 1)//被除数只有一位
t[j++] = '0';
else {
while (i < len) {
if (i == 0)
n = s[i] - '0';//被除数
else
n = s[i] - '0' + (s[i-1] - '0') * 10; //被除数
if (n >= m) { //除数小于被除数
t[j++] = n / m + '0';
s[i] = n % m + '0';
i++;
} else { //除数大于被除数
if (i > 0)
t[j++] = '0';
i++;
}
}
}
//输出商
for (int i = 0; i < j; i++)
cout << t[i];
//输出余数
cout << " " << (s[len-1] - '0') % m;
return 0;
}