obj/Release/netcoreapp3.1/PubTmp/Out/wwwroot/data/blogs/PAT乙级A除以B.md

(完整代码) 1KB

### PAT 乙级真题 1007.A除以B
#### 题目描述
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
#### 输入格式
输入在1行中依次给出A和B,中间以1空格分隔。
#### 输出格式
在1行中依次输出Q和R,中间以1空格分隔。
#### 输入样例
```text
123456789050987654321 7
```
#### 输出样例
```text
17636684150141093474 3
```
#### 题目思路
采用按位进行除法,余数进位的方式进行计算。
例如:  
367 / 2  
先计算 3 / 2 = 1 余 1  
再计算 被除数加上余数进位过来的数进行计算  
也就是 (6+1\*10) / 2 = 8 余 0  
在计算 (7+0\*10) / 2 = 3 余 1  
最后除出来的结果就是依次算式的得数 1 2 2  
余数就是最后的余数 1  
最后输出结果为:122 1  
  
解题代码如下:
```C++
#include<iostream>
using namespace std;

const int N = 1e3 + 10;

int main()
{
	char a[N];
	int c[N];
	int b, d = 0, i = 0;
	scanf("%s%d", a, &b);
	do {
		c[i] = ((a[i] - 48)+d*10) / b;
		d = ((a[i] - 48)+d*10) % b;
		i++;
	} while (a[i] >= '0'&&a[i] <= '9');
	if (c[0] != 0)
		for (int j = 0; j < i; j++)
		{
			printf("%d", c[j]);
		}
	else
		for (int j = 1; j < i; j++)
		{
			printf("%d", c[j]);
		}
	printf(" %d", d);
	return 0;
}

```

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。