ในปัญหานี้ เราได้รับสตริงสองสตริงที่กำหนดตัวเลขขนาดใหญ่สองตัว หน้าที่ของเราคือสร้างโปรแกรมหาผลรวมของตัวเลขขนาดใหญ่สองตัว
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input: number1 = “341299123919” number2 = “52413424” Output: 341351537343
เพื่อแก้ปัญหานี้ เราจะสำรวจทั้งสตริง และเพิ่มตัวเลขตามหลักและเผยแพร่การพกพา และเก็บตัวเลขผลลัพธ์ตามหลักเพื่อรวมสตริง
อัลกอริทึม
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.
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#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; }
ผลลัพธ์
Sum of two large numbers is 280466644200