1. 程式人生 > 其它 >acwing-794. 高精度除法

acwing-794. 高精度除法

給定兩個非負整數(不含前導 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);
}