সমস্যা
একটি ইন্টিজার n এবং একটি ডিজিট অ্যারে m[] (যে একটি বড় সংখ্যা রিপ্রেজেন্ট করে) দেওয়া। n + m[] রিপ্রেজেন্ট করা সংখ্যা = ?
অ্যালগরিদম: ডিজিট-বাই-ডিজিট অ্যাডিশন (LSB থেকে)
carry = 0।- অ্যারে
m-কে রিভার্স অর্ডারে (LSB প্রথম) প্রসেস করুন। - প্রতিটি ডিজিট
m[i]:sum = (n%10) + m[i] + carryn /= 10carry = sum/10m[i] = sum%10(রেজাল্ট অ্যারেতে স্টোর)۔
- শেষে
nবাcarryবাকি থাকলে হ্যান্ডল করুন।
C++ কোড
#include <iostream>
using namespace std;
void addNumbers(int n, int size, int* m) {
int carry = 0;
for (int i = size-1; i >= 0; i--) {
int sum = (n%10) + m[i] + carry;
n /= 10;
carry = sum/10;
m[i] = sum%10;
}
// n বা carry বাকি থাকলে আলাদা হ্যান্ডলিং লাগে (এখানে অনুমান করা হয় অ্যারে যথেষ্ট বড়)
}
int main() {
int n = 679;
int m[] = {1,9,5,7,1,9}; // 195719
int sz = sizeof(m)/sizeof(m[0]);
addNumbers(n, sz, m);
for (int i=0; i
আউটপুট
196398