【题目描述】
输入两个正整数,求它们的商和余数。
【输入】
输入两个低于300位的正整数
【输出】
输出商和余数
【输入样例】
1231312318457577687897987642324567864324567876543245671425346756786867867867
1231312318767141738178325678412414124141425346756786867867867
【输出样例】
999999999748590
179780909068307566598992807564736854549985603543237528310337
【算法分析】
高精除以低精是对被除数的每一位(这里的“一位”包含前面的余数,以下都是如此)都除以除数,而高精除以高精则是用减法模拟除法,对被除数的每一位都减去除数,一直减到当前位置的数字(包含前面的余数)小于除数(由于每一位的数字小于10,所以对于每一位最多进行10次计算)。
【参考程序】
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int a[101], b[101], c[101], d;
void init(int a[]) {
string s;
cin >> s; // 读入字符串s
a[0] = s.length(); // 用a[0]计算字符串s的位数
for (int i=1; i<=a[0]; i++) {
a[i] = s[a[0]-i] - 48; // 将数串s转换为数组a,并倒序存储
}
}
void print(int a[]) {
// 打印输出
if (a[0] == 0) {
cout << 0