分别输入两个数即可得到结果
加法:
#include <bits/stdc++.h>
using namespace std;
vector <int> add(vector <int> A, vector<int> B) {
if (A.size() < B.size()) return add(B, A);
vector <int> answer;
int jinwei = 0;
for (int i = 0; i < A.size(); i++) {
jinwei += A[i];
if (i < B.size()) jinwei += B[i];
answer.push_back(jinwei % 10);
jinwei /= 10;
}
if (jinwei != 0) answer.push_back(jinwei);
return answer;
}
int main() {
string a, b;
vector <int> 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> answer = add(A, B);
for (int i = answer.size()-1; i >= 0; i--) {
cout << answer[i];
}
}
减法:
#include <bits/stdc++.h>
using namespace std;
bool cmp(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];
}
return true;
}
vector <int> sub(vector <int> a, vector <int> b) {
vector <int> answer;
int t = 0;
for (int i = 0; i < a.size(); i++) {
t = a[i] - t;
if (i < b.size()) t -= b[i];
answer.push_back((t + 10) % 10);
if (t < 0)
t = 1;
else
t = 0;
}
while (answer.size() > 1 && answer.back() == 0) answer.pop_back();
return answer;
}
int main() {
vector <int> a, b;
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');
if (cmp(a, b))
{
auto c = sub(a, b);
for (int i = c.size()-1; i >= 0; i--) {
cout << c[i];
}
}
else {
auto c = sub(b, a);
cout << "-";
for (int i = c.size()-1; i >= 0; i--) {
cout << c[i];
}
}
}
乘法:
#include <bits/stdc++.h>
using namespace std;
vector <int> mul(vector <int> a, vector <int> b) {
vector <int> answer(a.size() + b.size()+8, 0);
for (int i = 0; i < a.size(); i++) {
for (int j = 0; j < b.size(); j++) {
answer[i + j] += a[i] * b[j];
}
}
int t = 0;
for (int i = 0; i < answer.size(); i++) {
t += answer[i];
answer[i] = t % 10;
t /= 10;
}
while (answer.size() >1 && answer.back() == 0) answer.pop_back();
return answer;
}
int main() {
vector <int> a, b;
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');
auto c = mul(a,b);
for(int i=c.size()-1;i>=0;i--){
cout << c[i];
}
}