PAT乙级1017(A/B)简单高精度

1.问题描述:

PAT乙级1017(A/B)简单高精度

2.算法分析:

这道题目是最近看到PAT乙级的一道题目,大概是这么个思想,明显1000位超过了long long,我们需要用字符串来存储数组,但是因为除数只是个位数,我们只需要模拟除法过程即可,首先我们要考虑到特殊情况,如字符串的长度为1时,那么商就应该是第一个字符与除数相除,那么商就应该是第一个字符与除数mod,对于特判后,我们应该考虑字符串长度大于1时,我们就模拟除法。
比如题目123456取输入的前6个字符
此时,

余数
1 / 7 = 0 1 % 7 = 1
余数 * 10 + 当前字符 - ‘0’ / 7 余数 * 10 + 当前字符 - ‘0’ %7

一直模拟就可以了。

3.AC代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
	string s;
	int chu;
	cin >> s >> chu;
	int shang,yu;
	if (s.size() == 1 || (s[0] - '0') >= chu) {
		cout << (s[0] - '0') / chu;
		yu = (s[0] - '0') % chu;
	} else {
		yu = (s[0] - '0');	
	}
	for (int i = 1; i < s.size(); i++) {
			shang = (yu * 10 + s[i] - '0') / chu;
			yu = (yu * 10 + s[i] - '0') % chu;
			cout << shang;
		}
	cout << " " << yu;
	return 0;
}