Trong bài toán này, chúng ta được cung cấp hai chuỗi xác định hai số lớn. Nhiệm vụ của chúng tôi là tạo một chương trình để tìm tổng của hai số lớn.
Hãy lấy một ví dụ để hiểu vấn đề,
Input: number1 = “341299123919” number2 = “52413424” Output: 341351537343
Để giải quyết vấn đề này, chúng tôi sẽ duyệt qua cả chuỗi. Và thêm từng chữ số và tuyên truyền mang theo. Và lưu trữ kết quả từng chữ số thành chuỗi tổng.
Thuật toán
Initialize sum = 0, carry = 0. Step 1: loop from n to 0. Step 1.1: intSum = number1[i] + number2[i] Step 1.2: carry = intSum/10. Sum += intSum Step 2: sum += carry. Step 3: return sum.
Ví dụ
Chương trình minh họa hoạt động của giải pháp của chúng tôi,
#include<bits/stdc++.h> using namespace std; string addBigNumbers(string number1, string number2) { if (number1.length() > number2.length()) swap(number1, number2); string sum = ""; int len1 = number1.length(); int len2 = number2.length(); int digitDiff = len2 - len1; int carry = 0; int intSum; for (int i=len1-1; i>=0; i--) { intSum = ((number1[i]-'0') + (number2[i+digitDiff]- '0') + carry); sum.push_back(intSum%10 + '0'); carry = intSum/10; } for (int i=digitDiff-1; i>=0; i--) { intSum = ((number2[i]-'0')+carry); sum.push_back(intSum%10 + '0'); carry = intSum/10; } if (carry) sum.push_back(carry+'0'); reverse(sum.begin(), sum.end()); return sum; } int main() { string number1 = "235235823852"; string number2 = "45230820348"; cout<<"Sum of two large numbers is "<<addBigNumbers(number1,x number2); return 0; }
Đầu ra
Sum of two large numbers is 280466644200