题目:
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
难点:A的值是很大的,所以在这里我们用字符串来表示数字;
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string A;//表示被除数
int B;//表示除数
int temp = 0, p = 0;
cin >> A >> B;
for (int i=0; i<A.length(); i++ )
{
temp = temp*10 + A[i] - '0';//每次用temp除以B,下一循环自动更新temp的值
if ( temp >= B )//判断是否大于除数B ,成立则输出商的第一位
{
cout << temp/B;
p = 1;//第一位输出后用p标记
}
else if (p)
{
cout << "0";//第一位输出后且temp<B,则后移一位,商0
}
temp %= B;//得到余数
}
if ( p == 0 )
cout << "0";
cout << " " << temp << endl;
return 0;
}