给定两个非负整数(不含前导 0)A,B,请你计算 A/B 的商和余数。
输入格式
共两行,第一行包含整数 A,第二行包含整数 B。
输出格式
共两行,第一行输出所求的商,第二行输出所求余数。
数据范围
1≤A的长度≤100000,
1≤B≤10000,
B 一定不为 0
输入样例:
7
2
输出样例:
3
1
方法一:
高精度除法比较好写:将被除数a的高位逐位加进来除被除数b,余数用p
存起来,保存当前商位(<10)。最后处理一下前导0,输出
#include <bits/stdc++.h>
using namespace std;
char a[100010];
int b;
int main() {
scanf("%s%d", &a, &b);
int la = strlen(a) - 1;
for (int i = 0; i <= la; i++) a[i] -= '0';
int p = 0;
vector<int> res;
for (int i = 0; i <= la; i++) {
p *= 10; p += a[i];
res.push_back(p/b);
p = p % b;
}
int i = 0;
while (i < res.size() && !res[i]) i++;
if (i == res.size()) printf("0");
else while (i < res.size()) printf("%d", res[i++]);
printf("\n%d", p);
}