# Digits of element wise sum of two arrays into a new array

• Difficulty Level : Basic
• Last Updated : 12 Sep, 2022

Given two arrays of positive integers A and B of sizes M and N respectively, the task is to push A[i] + B[i] into a new array for every i = 0 to min(M, N) and print the newly generated array in the end. If the sum is a two-digit number then break the digits into two elements i.e. every element of the resultant array must be a single digit number.

Examples:

Input: A = {2, 3, 4, 5}, B = {1, 12, 3}
Output: 3 1 5 7 5
2 + 1 = 3
3 + 12 = 15 = 1 5
4 + 3 = 7

Hence the resultant array will be {3, 1, 5, 7, 5}

Input: A = {23, 5, 2, 7, 87}, B = {4, 67, 2, 8}
Output: 2 7 7 2 4 1 5 8 7

Approach: Create a vector to store the result of every addition. If the addition is a single digit number then push the number in the vector else break the number into different digits and push the digits in the array one by one. Print the contents of the vector in the end.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``#include ``using` `namespace` `std;` `// Utility function to print the contents of the vector``void` `printVector(vector<``int``>& result)``{``    ``for` `(``int` `i : result)``        ``cout << i << ``" "``;``}` `// Recursive function to separate the digits of a positive``// integer and add them to the given vector``void` `split_number(``int` `num, vector<``int``>& result)``{``    ``if` `(num > 0) {``        ``split_number(num / 10, result);``        ``result.push_back(num % 10);``    ``}``}` `// Function to add two arrays``void` `add(vector<``int``> a, vector<``int``> b)``{``    ``// Vector to store the output``    ``vector<``int``> result;``    ``int` `m = a.size(), n = b.size();` `    ``// Loop till a or b runs out``    ``int` `i = 0;``    ``while` `(i < m && i < n) {` `        ``// Get sum of next element from each array``        ``int` `sum = a[i] + b[i];` `        ``// Separate the digits of sum and add them to``        ``// the resultant vector``        ``split_number(sum, result);``        ``i++;``    ``}` `    ``// Process remaining elements of first vector, if any``    ``while` `(i < m) {``        ``split_number(a[i++], result);``    ``}` `    ``// Process remaining elements of second vector, if any``    ``while` `(i < n) {``        ``split_number(b[i++], result);``    ``}` `    ``// Print the resultant vector``    ``printVector(result);``}` `// Driver code``int` `main()``{``    ``// input vectors``    ``vector<``int``> a = { 23, 5, 2, 7, 87 };``    ``vector<``int``> b = { 4, 67, 2, 8 };` `    ``add(a, b);` `    ``return` `0;``}`

## Java

 `// Java implementation of the above approach``import` `java.util.*;` `class` `GFG``{` `    ``// Utility function to print``    ``// the contents of the vector``    ``static` `void` `printVector(Vector result)``    ``{``        ``for` `(``int` `i : result)``        ``{``            ``System.out.print(i + ``" "``);``        ``}``    ``}` `    ``// Recursive function to separate``    ``// the digits of a positive integer``    ``// and add them to the given vector``    ``static` `void` `split_number(``int` `num, Vector result)``    ``{``        ``if` `(num > ``0``)``        ``{``            ``split_number(num / ``10``, result);``            ``result.add(num % ``10``);``        ``}``    ``}` `    ``// Function to add two arrays``    ``static` `void` `add(Vector a, Vector b)``    ``{``        ``// Vector to store the output``        ``Vector result = ``new` `Vector();``        ``int` `m = a.size(), n = b.size();` `        ``// Loop till a or b runs out``        ``int` `i = ``0``;``        ``while` `(i < m && i < n)``        ``{` `            ``// Get sum of next element from each array``            ``int` `sum = a.get(i) + b.get(i);` `            ``// Separate the digits of sum and add them to``            ``// the resultant vector``            ``split_number(sum, result);``            ``i++;``        ``}` `        ``// Process remaining elements``        ``// of first vector, if any``        ``while` `(i < m)``        ``{``            ``split_number(a.get(i++), result);``        ``}` `        ``// Process remaining elements``        ``// of second vector, if any``        ``while` `(i < n)``        ``{``            ``split_number(b.get(i++), result);``        ``}` `        ``// Print the resultant vector``        ``printVector(result);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``// input vectors``        ``int``[] arr1 = {``23``, ``5``, ``2``, ``7``, ``87``};``        ``Vector a = ``new` `Vector<>();``        ``for``(Integer i:arr1)``            ``a.add(i);``            ` `        ``int``[] arr2 = {``4``, ``67``, ``2``, ``8``};``        ``Vector b = ``new` `Vector();``        ``for``(Integer i:arr2)``            ``b.add(i);` `        ``add(a, b);``    ``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 implementation of the``# above approach` `# Utility function to print the``# contents of the list``def` `printVector(result):` `    ``for` `i ``in` `result:``        ``print``(i, end ``=` `" "``)` `# Recursive function to separate the``# digits of a positive integer and``# add them to the given list``def` `split_number(num, result):` `    ``if` `num > ``0``:``        ``split_number(num ``/``/` `10``, result)``        ``result.append(num ``%` `10``)` `# Function to add two lists``def` `add(a, b):` `    ``# List to store the output``    ``result ``=` `[]``    ``m, n ``=` `len``(a), ``len``(b)` `    ``# Loop till a or b runs out``    ``i ``=` `0``    ``while` `i < m ``and` `i < n:` `        ``# Get sum of next element from``        ``# each array``        ``sum` `=` `a[i] ``+` `b[i]` `        ``# Separate the digits of sum and``        ``# add them to the resultant list``        ``split_number(``sum``, result)``        ``i ``+``=` `1` `    ``# Process remaining elements of``    ``# first list, if any``    ``while` `i < m:``        ``split_number(a[i], result)``        ``i ``+``=` `1``    ` `    ``# Process remaining elements of``    ``# second list, if any``    ``while` `i < n:``        ``split_number(b[i], result)``        ``i ``+``=` `1`    `    ``# Print the resultant list``    ``printVector(result)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``# input lists``    ``a ``=` `[``23``, ``5``, ``2``, ``7``, ``87``]``    ``b ``=` `[``4``, ``67``, ``2``, ``8``]` `    ``add(a, b)` `# This code is contributed by rituraj_jain`

## C#

 `// C# implementation of the above approach``using` `System;``using` `System.Collections.Generic;` `class` `GFG``{` `    ``// Utility function to print``    ``// the contents of the vector``    ``static` `void` `printVector(List<``int``> result)``    ``{``        ``foreach` `(``int` `i ``in` `result)``        ``{``            ``Console.Write(i + ``" "``);``        ``}``    ``}` `    ``// Recursive function to separate``    ``// the digits of a positive integer``    ``// and add them to the given vector``    ``static` `void` `split_number(``int` `num, List<``int``> result)``    ``{``        ``if` `(num > 0)``        ``{``            ``split_number(num / 10, result);``            ``result.Add(num % 10);``        ``}``    ``}` `    ``// Function to add two arrays``    ``static` `void` `add(List<``int``> a, List<``int``> b)``    ``{``        ``// Vector to store the output``        ``List<``int``> result = ``new` `List<``int``>();``        ``int` `m = a.Count, n = b.Count;` `        ``// Loop till a or b runs out``        ``int` `i = 0;``        ``while` `(i < m && i < n)``        ``{` `            ``// Get sum of next element from each array``            ``int` `sum = a[i] + b[i];` `            ``// Separate the digits of sum and add them to``            ``// the resultant vector``            ``split_number(sum, result);``            ``i++;``        ``}` `        ``// Process remaining elements``        ``// of first vector, if any``        ``while` `(i < m)``        ``{``            ``split_number(a[i++], result);``        ``}` `        ``// Process remaining elements``        ``// of second vector, if any``        ``while` `(i < n)``        ``{``            ``split_number(b[i++], result);``        ``}` `        ``// Print the resultant vector``        ``printVector(result);``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``// input vectors``        ``int``[] arr1 = {23, 5, 2, 7, 87};``        ``List<``int``> a = ``new` `List<``int``>();``        ``foreach``(``int` `i ``in` `arr1)``            ``a.Add(i);``            ` `        ``int``[] arr2 = {4, 67, 2, 8};``        ``List<``int``> b = ``new` `List<``int``>();``        ``foreach``(``int` `i ``in` `arr2)``            ``b.Add(i);` `        ``add(a, b);``    ``}``}` `// This code is contributed by princiraj1992`

## Javascript

 ``

Output

`2 7 7 2 4 1 5 8 7 `

Time Complexity : O(max(m,n))

My Personal Notes arrow_drop_up