题意
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
分析
A 除以 B,第一次写到手工计算商和余数。
思路就是手工计算的思路。但是有个好处就是,即使你的被除数超过了2位,3位,输出余数和商的时候,直接用a/b, a % b是没有问题的。
需要注意的是,有一个测试点,需要单独判断长度为1的被除数。
因为按照我的循环,被除数太小,可能就输出0了。
这里,也是因为除数是个位数,赶了个巧。
代码
int main()
{
string a;
int b;
cin >> a >> b ;
if(a.length() == 1 )
{
int aa = a[0] - '0';
cout << aa/b <<" "<< aa % b;
return 0 ;
}
int temp = a[0] - '0';
for(int i = 1 ; i < a.length() ; i ++ )
{
temp = temp * 10;
temp += a[i] - '0';
if( temp / b != 0)
{
cout << temp/b ;
temp = temp % b;
}
else cout << 0;
if( i == a.length() - 1)
cout<< " " << temp % b;
}
}