高精度加法
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const double Pi = acos(-1);
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define rap(i, a, b) for (int i = a; i < b; i++)
string A, B;
int a[6666], b[6666], c[6666];
int main() {
cin >> A >> B;
int lena = A.length();
int lenb = B.length();
for (int i = 1; i <= lena; i++) a[i] = A[lena-i]-'0';
for (int i = 1; i <= lenb; i++) b[i] = B[lenb-i]-'0';
int len = lena+lenb+1;
for (int i = 1; i <= lena; i++) {
c[i] = a[i]+b[i]+c[i];
c[i+1] = (a[i]+b[i])/10;
c[i] = (a[i]+b[i])%10;
}
while (c[len] == 0 && len > 1) len--;
for (int i = len; i >= 1; i--) {
cout << c[i];
}
return 0;
}
高精度乘法
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const double Pi = acos(-1);
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define rap(i, a, b) for (int i = a; i < b; i++)
string A, B;
int a[6666], b[6666], c[6666];
int main() {
cin >> A >> B;
int lena = A.length();
int lenb = B.length();
for (int i = 1; i <= lena; i++) a[i] = A[lena-i]-'0';
for (int i = 1; i <= lenb; i++) b[i] = B[lenb-i]-'0';
int len = lena+lenb+1;
for (int i = 1; i <= lena; i++) {
for (int j = 1; j <= lenb; j++) {
c[i+j-1] += a[i]*b[j];
c[i+j] += c[i+j-1]/10;
c[i+j-1] = c[i+j-1]%10;
}
}
while (c[len] == 0 && len > 1) len--;
for (int i = len; i >= 1; i--) {
cout << c[i];
}
return 0;
}