本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
C语言实现
#include <stdio.h>
int main() {
char num[1001], quo[1001];
int div; // 除数
scanf("%s%d", num, &div);
int rem = 0; // 余数
int pos = 0; // 商的位置
for (int i = 0; num[i] != '\0'; ++i) {
rem = 10 * rem + num[i] - '0';
char q = rem / div + '0';
rem %= div;
if (!(pos == 0 && q == '0' && strlen(num) > 1)) {
quo[pos++] = q;
}
}
quo[pos] = '\0';
printf("%s %d", quo, rem);
return 0;
}
思路:1.按照笔算除法的步骤去实现
2.需要注意如果刚开始不够除的话,0不要放到商的结果里面
3.注意被除数为小于除数的情况,此时商为0.这种情况容易漏掉,导致不输出结果