#include<iostream>#include<algorithm>usingnamespace std;
vector<int> a, b;boolcheck(vector<int>&a, vector<int>&b){if(a.size()!= b.size()){return a.size()> b.size();}for(int i = a.size()-1; i >=0; i --){if(a[i]!= b[i]){return a[i]> b[i];}}returntrue;}
vector<int>sub(vector<int>&a, vector<int>&b){int t =0, i =0, sub =0;
vector<int> c;for(i; i < a.size(); i ++){if(i < b.size()){
sub = a[i]- b[i]- t;}else{
sub = a[i]- t;}if(sub <0){
t =1;
sub +=10;}else{
t =0;}
c.push_back(sub %10);}while(c.back()==0&& c.size()>1){
c.pop_back();}return c;}intmain(){
string A, B;
cin >> 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');}
vector<int> c;if(!check(a, b)){
cout <<-1;
c =sub(b, a);}else{
c =sub(a, b);}for(int i = c.size()-1; i >=0; i --){printf("%d", c[i]);}return0;}
题目三 高精度乘法
代码实现
#include<iostream>#include<algorithm>usingnamespace std;
vector<int> a;
vector<int>mul(vector<int>&a,int b){
vector<int>c;int mul =0, t =0, i =0;while(i < a.size()){
mul = a[i]* b + t;
c.push_back(mul %10);
t = mul /10;
i ++;}if(t){
c.push_back(t);}while(c.back()==0&& c.size()>1){
c.pop_back();}return c;}intmain(){
string A;int B;
cin >> A >> B;for(int i = A.size()-1; i >=0; i --){
a.push_back(A[i]-'0');}
vector<int> c =mul(a, B);for(int i = c.size()-1; i >=0; i --){printf("%d", c[i]);}return0;}
题目四 高精度除法
代码实现
#include<iostream>#include<algorithm>usingnamespace std;
vector<int> a;voiddiv(vector<int>&a,int b){
vector<int> c;int i = a.size()-1, mul =0, res =0;while(i >=0){
mul =(res *10+ a[i])/ b;
c.push_back(mul);
res =(res *10+ a[i])% b;
i --;}reverse(c.begin(), c.end());while(c.back()==0&& c.size()>1){
c.pop_back();}for(int i = c.size()-1; i >=0; i --){printf("%d", c[i]);}
cout << endl << res;}intmain(){
string A;int B;
cin >> A >> B;for(int i = A.size()-1; i >=0; i --){
a.push_back(A[i]-'0');}div(a, B);return0;}