সমস্যা
দুটি বড় সংখ্যা স্ট্রিং হিসেবে দেওয়া। তাদের যোগফল স্ট্রিং হিসেবে রিটার্ন করুন।
অ্যালগরিদম: স্ট্রিং অ্যাডিশন (ম্যানুয়াল)
- দুটি স্ট্রিং রিভার্স করুন (বা শেষ থেকে শুরু করুন)।
- দুটি দৈর্ঘ্য সমান করতে ছোটটিকে লিডিং জিরো প্যাড করুন।
- প্রতিটি পজিশনে ডিজিট যোগ করুন + ক্যারি।
- রেজাল্ট ডিজিট পুশ করুন, ক্যারি আপডেট করুন।
- শেষে ক্যারি থাকলে পুশ করুন।
- রেজাল্ট রিভার্স করুন।
C++ কোড
#include <bits/stdc++.h>
using namespace std;
string addBigNumbers(string a, string b) {
if (a.size() > b.size()) swap(a,b);
int n = a.size(), m = b.size();
int diff = m - n;
string res = "";
int carry = 0;
for (int i=n-1; i>=0; i--) {
int sum = (a[i]-'0') + (b[i+diff]-'0') + carry;
res.push_back('0' + sum%10);
carry = sum/10;
}
for (int i=diff-1; i>=0; i--) {
int sum = (b[i]-'0') + carry;
res.push_back('0' + sum%10);
carry = sum/10;
}
if (carry) res.push_back('0' + carry);
reverse(res.begin(), res.end());
return res;
}
int main() {
string n1 = "235235823852";
string n2 = "45230820348";
cout << "Sum: " << addBigNumbers(n1, n2); // 280466644200
}
আউটপুট
Sum of two large numbers is 280466644200