acwing794. 高精度除法

给定两个非负整数(不含前导 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);
}
原文地址:https://www.cnblogs.com/nosae/p/15821852.html