本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
遍历一遍被除数,因为除数只有一位,所以如果够除的话就将结果放在一个字符串里面,如果不够除就补零,但是补零有两种情况,被除数长度大于一并且此时第一需要补零的话,这个零被省略,第二种情况是,被除数只有一位且第一位就不够除,比如2/3,那么第一位是要补零的。够除之后会有余数,余数就乘以10和后一位相加继续运算下去。
#include<iostream>
using namespace std;
int main()
{
string str,re;
int n,tmp=0,cs=0;//cs表示除数,tmp表示商
cin >> str >> n;
for (int i = 0; i < str.size(); i++)
{
cs = str[i] - '0' + tmp*10;
if (cs / n == 0)
{
if (i != 0||str.size()==1)
re += '0';
}
else
re += (cs) / n + '0';
tmp = cs % n;
}
cout << re << " " << tmp;
return 0;
}