题目描述
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入描述:
输入在1行中依次给出A和B,中间以1空格分隔。
输出描述:
在1行中依次输出Q和R,中间以1空格分隔。
输入例子:
123456789050987654321 7
输出例子:
17636684150141093474 3
我的思路是使用一个递归函数来完成,不断利用余数对除数进行除法直到位数小于2
#include <iostream>
#include <iomanip>
#include <cstring>
#include <sstream>
#include <string>
using namespace std;
int ResidueInInt;
string ResidueInString;
void MyFun(string A, int B)
{
if (A.size() <= 2)
{
ResidueInInt = atoi(A.c_str());
cout << ResidueInInt / B << " " << ResidueInInt % B;
return;
}
else
{
ResidueInString = A.substr(0, 2);
ResidueInInt = atoi(ResidueInString.c_str());
cout << ResidueInInt / B;
ResidueInInt = ResidueInInt % B;
ResidueInString = std::to_string(ResidueInInt);
ResidueInString = ResidueInString + A.substr(2);
MyFun(ResidueInString, B);
return;
}
}
int main()
{
string A = "";
int B;
cin >> A >> B;
int count = 0;
MyFun(A, B);
//while (1);
return 0;
}