题目地址:PAT乙1017.A除以B(20)
题目描述:
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
程序:
#include <iostream>
#include <string>
using namespace std;
// 第一次做漏掉了被除数是个位数的情况,并且这里数组可以采用int类型更好
int main()
{
string strA;
char strQ[1001];
int B, i = 0, k = 0;
char R;
cin >> strA >> B;
while (strA[i] != NULL)
{
int A;
if (strA[i] < B+'0')
{
if (strA[i+1] == NULL)
{
if (i == 0) // 新增被除数为个位数判断 下同
{
strQ[k++] = '0';
R = strA[i];
}
else
{
R = strA[i];
}
i++;
}
else
{
A = (strA[i]-'0')*10 + (strA[i+1]-'0');
strQ[k++] = A / B + '0';
strA[i+1] = A % B + '0';
i++;
}
}
else
{
A = (strA[i]-'0');
if (strA[i+1] != NULL)
{
strQ[k++] = A / B + '0';
strA[i] = A % B + '0';
}
else
{
strQ[k++] = A / B + '0';
strA[i] = A % B;
R = A % B + '0';
}
}
}
for (int j = 0; j < k; ++j)
{
cout << strQ[j];
}
cout << " " << R << endl;
}