文章
166
粉丝
68
获赞
855
访问
61.6k
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
int n;
while (cin >> s >> n) {
int a[1005] = {0}; // 存储大整数的每一位
for (int i = 0; i < s.size(); i++) {
a[i] = s[i] - '0'; // 将字符转换为数字
}
int remainder = 0; // 余数
int flag = 0; // 标记是否已经开始输出商
for (int i = 0; i < s.size(); i++) {
int current = remainder * 10 + a[i]; // 当前被除数
a[i] = current / n; // 当前位的商
remainder = current % n; // 当前位的余数
if (a[i] != 0) flag = 1; // 如果商不为零,开始输出
if (flag) cout << a[i]; // 输出商
}
if (!flag) cout << "0"; // 如果商为零,输出 0
cout << " " << remainder << endl; // 输出余数
}
return 0;
}
高精度除以低精度的时候,我们有三种办法,短除法,长除法,和牛顿迭代法,这个就是长除法的例子,注释已经写好了,感兴趣的同学们可以自行查阅。
本题因为是一位数,其实也可以用短除法,更好写,代码如下
...
登录后发布评论
暂无评论,来抢沙发