इस समस्या के लिए, दो दिए गए सरणियों के तत्वों को जोड़ने के लिए हमारे पास कुछ बाधाएँ हैं जिनके आधार पर जोड़ा गया मान बदल जाएगा। दो दिए गए सरणियों का योग a[] और b[] को तीसरे सरणी c[] में इस तरह से संग्रहीत किया जाता है कि उन्होंने कुछ तत्वों को एकल अंक में दिया। और यदि योग के अंकों की संख्या 1 से अधिक है, तो तीसरी सरणी का तत्व दो एकल अंकों वाले तत्वों में विभाजित हो जाएगा। उदाहरण के लिए, यदि योग 27 होता है, तो तीसरा सरणी इसे 2,7 के रूप में संग्रहीत करता है।
Input: a[] = {1, 2, 3, 7, 9, 6} b[] = {34, 11, 4, 7, 8, 7, 6, 99} Output: 3 5 1 3 7 1 4 1 7 1 3 6 9 9
स्पष्टीकरण
आउटपुट सरणी और दोनों सरणियों के 0 वें सूचकांक से एक लूप चलाएं। लूप के प्रत्येक पुनरावृत्ति के लिए, हम दोनों सरणियों में अगले तत्वों पर विचार करते हैं और उन्हें जोड़ते हैं। यदि योग 9 से अधिक है, तो हम योग के अलग-अलग अंकों को आउटपुट सरणी में धकेलते हैं अन्यथा हम योग को ही आगे बढ़ाते हैं। अंत में, हम बड़े इनपुट सरणी के शेष तत्वों को आउटपुट सरणी में धकेलते हैं।
उदाहरण
#include <iostream> #include<bits/stdc++.h> using namespace std; void split(int n, vector<int> &c) { vector<int> temp; while (n) { temp.push_back(n%10); n = n/10; } c.insert(c.end(), temp.rbegin(), temp.rend()); } void addArrays(int a[], int b[], int m, int n) { vector<int> out; int i = 0; while (i < m && i < n) { int sum = a[i] + b[i]; if (sum < 10) { out.push_back(sum); } else { split(sum, out); } i++; } while (i < m) { split(a[i++], out); } while (i < n) { split(b[i++], out); } for (int x : out) cout << x << " "; } int main() { int a[] = {1, 2, 3, 7, 9, 6}; int b[] = {34, 11, 4, 7, 8, 7, 6, 99}; int m =6; int n = 8; addArrays(a, b, m, n); return 0; }