给定两个非负整数A,B,请你计算 A / B的商和余数。
输入格式
共两行,第一行包含整数A,第二行包含整数B。
输出格式
共两行,第一行输出所求的商,第二行输出所求余数。
数据范围
1≤A的长度≤100000,
1≤B≤10000
B 一定不为0
输入样例:
7
2
输出样例:
3
1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll>A,C;
void chu(vector<ll>,ll b,ll &r) //&r传值可以将函数中的值的改变返回;
{
for(ll i=0;i<A.size();i++)
{
r=r*10+A[i]; //r是上一次的余数;
C.push_back(r/b); //如果可以进位则进位;
r%=b; //更新r
}
reverse(C.begin(),C.end()); //得到的结果可能后导为0;需要经过翻转后去除后导0;
// 例 3263 除以50
// r=3; C:0; r=3;
// r=32; C:00; r=32;
// r=326; C:006; r=26;
// r=263; C:0065; r=13;
// C的后导有0;
// 结果 65 余13;
// 翻转后去后导0;
while(C.size()>1&&C.back()== 0) C.pop_back();
reverse(C.begin(),C.end()); // 在翻转回即是答案;
}
int main()
{
string S;
cin>>S;
for(ll i=0;i<S.size();i++)A.push_back(S[i]-'0'); //除法正序输入就可以了;
ll r=0;
ll b;cin>>b;
chu(A,b,r);
for(ll i=0;i<C.size();i++)cout<<C[i];
cout<<endl<<r;
}