acwing-794. 高精度除法
阿新 • • 發佈:2022-01-19
給定兩個非負整數(不含前導 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); }