#include<iostream>#include<vector>
using namespace std;
vector<int>add(vector<int>&A,vector<int>&B){
cout <<"高精度加法:\n";if(A.size()< B.size())returnadd(B, A);int t =0; vector<int>C;for(int i =0; i < A.size(); i++){
t += A[i];if(i < B.size())
t += B[i];
C.push_back(t %10);
t /=10;}if(t)
C.push_back(t);while(C.back()==0&& C.size()>1)
C.pop_back();for(int i = C.size()-1; i >=0; i--){
cout << C[i];}
cout << endl;return C;}
vector<int>solve(vector<int>& A, vector<int>& B){
cout <<"高精度减法:\n";if(A.size()< B.size())returnsolve(B, A);int t =0; vector<int>C;for(int i =0; i < A.size(); i++){
t = A[i]- t;if(i < B.size())
t -= B[i];
C.push_back(((t +10)%10));if(t<0)
t =1;else
t =0;}while(C.back()==0&& C.size()>=1)
C.pop_back();for(int i = C.size()-1; i >=0; i--){
cout << C[i];}
cout << endl;return C;}
vector<int>mul(vector<int>&A,int x){
cout <<"高精度乘低精度:\n";
vector<int>C;int t =0;for(int i =0; i < A.size(); i++){
t += A[i]* x;
C.push_back(t %10);
t /=10;}if(t)
C.push_back(t);for(int i = C.size()-1; i >=0; i--){
cout << C[i];}return C;}intmain(){
string a, b;
cin >> a >> b;
vector<int>A, B;for(int i = a.size()-1; i>=0;i--){
A.push_back(a[i]-'0');}for(int i = b.size()-1; i >=0; i--){
B.push_back(b[i]-'0');}solve(A, B);add(A, B);mul(A,10);system("pause");return0;}
高精度乘高精度
高精度乘以高精度
#include<iostream>#include<string>
using namespace std;int Array1[1000010], Array2[1000000], cmp[1010000];intmain(){
string a, b;
cin >> a >> b;for(int i =0; i < a.size(); i++){
Array1[i]= a[a.size()-1- i]-'0';}for(int i =0; i < b.size(); i++){
Array2[i]= b[b.size()-1- i]-'0';}for(int i =0; i < a.size(); i++){for(int j =0; j < b.size(); j++){
cmp[i + j]+=(Array1[i]* Array2[j]);
cmp[i + j +1]+=(cmp[i + j]/10);
cmp[i + j]%=10;}}int h = a.size()+ b.size();for(int i =0;; i++){if(cmp[i]==0)
h--;elsebreak;}for(int i = h; i >=0; i--){
cout << cmp[i];}system("pause");return0;