Related Articles

Find the maximum sum of digits of the product of two numbers

• Last Updated : 16 Mar, 2021

Given an array arr[] of size N( > 2). The task is to find the maximum sum of digits of the product of any two numbers of the given array.
Examples:

Input : arr[] = {8, 7}
Output : 11
The product of 8 and 7 is 56. The sum of the digits of 56 is equal to 11.
Input : arr[] = {4, 3, 5}
Output :
Product of 4 & 3 = 12. Sum of the digits = 3.
Product of 3 & 5 = 15. Sum of the digits = 6.
Product of 4 & 5 = 20. Sum of the digits = 2.

Approach: Run nested loops to select two numbers of the array and get the product. For every product check the digit sum and find the maximum digit sum.
Below is the implementation of the above approach:

C++

 `// C++ program find the maximum sum of``// digits of the product of two numbers``#include ``using` `namespace` `std;` `// Function to find the sum of the digits``int` `sumDigits(``int` `n)``{``    ``int` `digit_sum = 0;``    ``while` `(n) {``        ``digit_sum += n % 10;``        ``n /= 10;``    ``}``    ``return` `digit_sum;``}` `// Function to find the maximum sum of digits of product``int` `productOfNumbers(``int` `arr[], ``int` `n)``{``    ``int` `sum = INT_MIN;` `    ``// Run nested loops``    ``for` `(``int` `i = 0; i < n - 1; i++) {``        ``for` `(``int` `j = i + 1; j < n; j++) {``            ``int` `product = arr[i] * arr[j];` `            ``// Find the maximum sum``            ``sum = max(sum, sumDigits(product));``        ``}``    ``}` `    ``// Return the required answer``    ``return` `sum;``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 4, 3, 5 };` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``cout << productOfNumbers(arr, n);` `    ``return` `0;``}`

Java

 `// Java program find the maximum sum of``// digits of the product of two numbers``import` `java.io.*;` `class` `GFG``{` `// Function to find the sum of the digits``static` `int` `sumDigits(``int` `n)``{``    ``int` `digit_sum = ``0``;``    ``while` `(n > ``0``)``    ``{``        ``digit_sum += n % ``10``;``        ``n /= ``10``;``    ``}``    ``return` `digit_sum;``}` `// Function to find the maximum sum``// of digits of product``static` `int` `productOfNumbers(``int` `[]arr, ``int` `n)``{``    ``int` `sum = Integer.MIN_VALUE;` `    ``// Run nested loops``    ``for` `(``int` `i = ``0``; i < n - ``1``; i++)``    ``{``        ``for` `(``int` `j = i + ``1``; j < n; j++)``        ``{``            ``int` `product = arr[i] * arr[j];` `            ``// Find the maximum sum``            ``sum = Math.max(sum, sumDigits(product));``        ``}``    ``}` `    ``// Return the required answer``    ``return` `sum;``}` `// Driver code``public` `static` `void` `main (String[] args)``{``    ``int` `[]arr = { ``4``, ``3``, ``5` `};``    ` `    ``int` `n = arr.length;``    ` `    ``System.out.print( productOfNumbers(arr, n));``}``}` `// This code is contributed by anuj_67..`

Python3

 `# Python3 program find the maximum sum of``# digits of the product of two numbers``import` `sys` `# Function to find the sum of the digits``def` `sumDigits(n):` `    ``digit_sum ``=` `0``;``    ``while` `(n > ``0``):``        ``digit_sum ``+``=` `n ``%` `10``;``        ``n ``/``=` `10``;``    ` `    ``return` `digit_sum;` `# Function to find the maximum sum``# of digits of product``def` `productOfNumbers(arr, n):` `    ``sum` `=` `-``sys.maxsize ``-` `1``;` `    ``# Run nested loops``    ``for` `i ``in` `range``(n ``-` `1``):``        ``for` `j ``in` `range``(i ``+` `1``, n):``            ``product ``=` `arr[i] ``*` `arr[j];` `            ``# Find the maximum sum``            ``sum` `=` `max``(``sum``, sumDigits(product));` `    ``# Return the required answer``    ``return` `sum``;` `# Driver code``if` `__name__ ``=``=` `'__main__'``:` `    ``arr ``=``[ ``4``, ``3``, ``5` `];` `    ``n ``=` `len``(arr);` `    ``print``(``int``(productOfNumbers(arr, n)));` `# This code contributed by PrinciRaj1992`

C#

 `// C# program find the maximum sum of``// digits of the product of two numbers``using` `System;` `class` `GFG``{` `// Function to find the sum of the digits``static` `int` `sumDigits(``int` `n)``{``    ``int` `digit_sum = 0;``    ``while` `(n > 0)``    ``{``        ``digit_sum += n % 10;``        ``n /= 10;``    ``}``    ``return` `digit_sum;``}` `// Function to find the maximum sum``// of digits of product``static` `int` `productOfNumbers(``int` `[]arr, ``int` `n)``{``    ``int` `sum = ``int``.MinValue;` `    ``// Run nested loops``    ``for` `(``int` `i = 0; i < n - 1; i++)``    ``{``        ``for` `(``int` `j = i + 1; j < n; j++)``        ``{``            ``int` `product = arr[i] * arr[j];` `            ``// Find the maximum sum``            ``sum = Math.Max(sum, sumDigits(product));``        ``}``    ``}` `    ``// Return the required answer``    ``return` `sum;``}` `// Driver code``public` `static` `void` `Main (String[] args)``{``    ``int` `[]arr = { 4, 3, 5 };``    ` `    ``int` `n = arr.Length;``    ` `    ``Console.Write(productOfNumbers(arr, n));``}``}` `// This code is contributed by 29AjayKumar`

Javascript

 ``

Output:

`6`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up