您的位置:首页 > 健康 > 美食 > 【AcWing】【C++】高精度乘法和除法

【AcWing】【C++】高精度乘法和除法

2024/10/14 5:57:12 来源:https://blog.csdn.net/Coffeemaker88/article/details/142292023  浏览:    关键词:【AcWing】【C++】高精度乘法和除法

高精度乘除法

按照AcWing当中高精度乘除法的模板进行重新实现。注意此处的高精度乘除法指的是被乘数和被除数为高精度大整数,而乘数和除数是int范围内的整型,因此不是特别复杂。

高精度乘法

#include <iostream>
#include <string>
#include <vector>
using namespace std;string a;
int b;vector<int> A;vector<int> mul(vector<int> &A, int b) {int t = 0;vector<int> C;for(int i=0; i<A.size() || t; i++) {if(i < A.size())    t = t + A[i] * b;C.push_back(t % 10);t /= 10;}return C;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cin >> a >> b;for(int i=a.length()-1; i>=0; i--){A.push_back(a[i] - '0');}auto C = mul(A, b);if(b == 0){cout << 0;return 0;}for(int i=C.size()-1; i>=0; i--) {cout << C[i];}return 0;
}

高精度除法

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;string a;
int b;
vector<int> A;vector<int> div(vector<int> &A, int b, int &r) {vector<int> C;for(int i=0;i<A.size();i++){r = r * 10 + A[i];C.push_back(r/b);r %= b;}reverse(C.begin(), C.end());while(C.size() > 1 && C.back() == 0) {C.pop_back();}return C;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cin >> a >> b;for(int i=0;i<a.length();i++) {A.push_back(a[i] - '0');}int r = 0;auto C = div(A, b, r);for(int i=C.size()-1;i>=0;i--) {cout << C[i];}cout << endl << r;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com