题目描述
输入两个整数 a , b a,b a,b,输出它们的商。
输入格式
两行,第一行是被除数,第二行是除数。
输出格式
一行,商的整数部分。
样例 #1
样例输入 #1
10
2
样例输出 #1
5
提示
0 ≤ a ≤ 1 0 5000 0\le a\le 10^{5000} 0≤a≤105000, 1 ≤ b ≤ 1 0 9 1\le b\le 10^9 1≤b≤109。
解题步骤:
高精度/低进度的步骤:
1.高精度数字利用字符串读入
2.把字符串翻转存入整形数组A
3.从高位到低位,当前被除数,存商,求余数
4.把数组C从高位到低位依次输出
时间复杂度O(n)
AC代码:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 5050;
int a[N], c[N];
int la, lc;
void div(int a[], int b, int c[]) {
ll r = 0;
for (int i = la - 1; ~i; i--) {
r = r * 10 + a[i];
c[la - 1 - i] = r / b;
r %= b;
}
reverse(c, c + lc);
while (lc && c[lc] == 0)lc--;
}
int main() {
string s1;
int b;
cin >> s1 >> b;
la =lc=s1.size();
for (int i = la - 1; ~i; i--)a[la - 1 - i] = s1[i] - '0';
div(a, b, c);
for (int i = lc; ~i; i--)cout << c[i];
return 0;
}