给定两个非负整数(不含前导 00) A,B�,�,请你计算 A/B�/� 的商和余数。
输入格式
共两行,第一行包含整数 A�,第二行包含整数 B�。
输出格式
共两行,第一行输出所求的商,第二行输出所求余数。
数据范围
1≤A的长度≤1000001≤�的长度≤100000,
1≤B≤100001≤�≤10000,
B� 一定不为 0
#include<bits/stdc++.h>
using namespace std;
vector<int> div(vector<int> &a,int &b,int &r)
{
r = 0;
vector<int> c;
for(int i = a.size() - 1; i >= 0; i --)//从高位开始算
{
r = r * 10 + a[i];//用上次算的余数乘以10+下一位作为被除数
c.push_back(r / b);
r %= b;
}
reverse(c.begin(),c.end());//c[0]存的是高位,需要调转
while(c.size() != 1 && c.back() == 0) c.pop_back();//去掉前导0
return c;
}
int main()
{
string A;
int b;
cin >> A >> b;
vector<int> a;
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;
return 0;
}