高精度加法
#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; }