题目地址:
https://www.luogu.com.cn/problem/P1480
题目描述:
输入两个整数
a
,
b
a,b
a,b,输出它们的商。
输入格式:
两行,第一行是被除数,第二行是除数。
输出格式:
一行,商的整数部分。
数据范围:
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
模拟竖式除法即可。代码如下:
#include <iostream>
using namespace std;
string a, res;
long b;
int main() {
cin >> a >> b;
long t = 0;
for (int i = 0; i < a.size(); i++) {
res.push_back((t * 10 + a[i] - '0') / b + '0');
t = (t * 10 + a[i] - '0') % b;
}
int i = 0;
while (i + 1 < res.size() && res[i] == '0') i++;
cout << res.substr(i) << endl;
}
时间复杂度 O ( log a ) O(\log a) O(loga),空间 O ( 1 ) O(1) O(1)。