高精度除以低精度
2023-07-25 20:28:08
发布于:河北
模拟列式除法。
计算的最终答案是存放在 c 字符串中,c 不断获取商。期间用一个变量既可以表示余数,也可以组合为被除数。
最后需要删除前置 0。懒死了
#include <bits/stdc++.h>
using namespace std;
string multiply(string a, int b, int &y) {
//构造一个答案 c 字符串,获取每次的商
string c;
long long div = 0;
for (int i = 0; i < a.length(); i++) {
div = div * 10 + (a[i] - '0');
c += char(div / b + '0'); // 处理商拼接到 c 中,直接转换为字符数字
div %= b; // 余下的数字
}
while (c.length() > 1 && c.front() == '0') c.erase(c.begin());
y = div; // 余数
return c;
}
int main() {
string a;
int b, y;
cin >> a >> b;
cout << multiply(a, b, y) << "\n" << y;
return 0;
}
全部评论 1
改的
# include <bits/stdc++.h> typedef unsigned long long ull; using namespace std ; int i,j,k; string m(string a,ull b,ull &y) { string c; ull div=0; for(i=0;i<a.length();i++){ div=div*10+(a[i]-'0'); c+=char(div/b+'0'); div%=b; } while(c.length()>1&&c.front()=='0') c.erase(c.begin()); y=div; return c; } int main ( ) { string a; ull b,y; cin>>a>>b; cout<<m(a,b,y)<<endl<<y; return 0; }
2025-03-25 来自 江西
0
有帮助,赞一个