Acwing 794. 高精度除法
题目描述
给定两个非负整数(不含前导 0
) A,B,请你计算 A/B 的商和余数。
输入格式
共两行,第一行包含整数 A,第二行包含整数 B
输出格式
共两行,第一行输出所求的商,第二行输出所求余数。
数据范围
1≤A的长度≤100000,
1≤B≤10000,
B 一定不为 0
思路
模拟人的计算过程,每一位上都有数字,最后将前面的零删除就行了。
代码
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int n ,m;
vector<int> div(vector<int> A ,const int b, int& c)
{
vector<int> B;
c = 0;
// r 代表除以除数的剩余的部分,然后加上下一位
for(int i = A.size()-1 ; i >= 0 ;-- i)
{
c = c*10 + A[i];
B.push_back(c/b);
c %= b;
}
reverse(B.begin(), B.end());
while (B.size() > 1 && B.back() == 0) B.pop_back();
return B;
}
int main()
{
string a;
vector<int> A;
int B;
cin >> a >> B;
for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');
int r;
auto C = div(A, B, r);
for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
cout << endl << r << endl;
return 0;
}
cout << endl << r << endl;
return 0;
}