去除前导零就可
#include <iostream> #include <algorithm> #include <string.h> #include <vector> #include <cmath> typedef long long ll; using namespace std; vector<int> add(vector<int>& A, vector<int>& B); int main() { int n; char a[5050]; char b[5050]; vector<int>A; vector<int>B; scanf("%d", &n); while (n--) { memset(a, '\0', sizeof(a)); memset(b, '\0', sizeof(b)); A.clear(); B.clear(); scanf("%s", a); scanf("%s", b); for (int i = strlen(a) - 1; i >= 0; i--) { A.push_back(a[i]-'0'); } for (int i = strlen(b) - 1; i >= 0; i--) { B.push_back(b[i]-'0'); } vector<int>C = add(A, B); for (int i = C.size() - 1; i >= 0; i--) { printf("%d", C[i]); } printf("\n"); } return 0; } vector<int> add(vector<int>& A, vector<int>& B) { int temp = 0; vector<int>C; while (A.back() == 0) A.pop_back(); while (B.back() == 0) B.pop_back(); for (int i = 0; i < A.size() || i < B.size(); i++) { if (i < A.size()) temp += A[i]; if (i < B.size()) temp += B[i]; C.push_back(temp % 10); temp /= 10; } if (temp) C.push_back(temp); return C; }