GeeksforGeeks App
Open App
Browser
Continue

# Sum and Product of minimum and maximum element of an Array

Given an array. The task is to find the sum and product of the maximum and minimum elements of the given array.

Examples

```Input : arr[] = {12, 1234, 45, 67, 1}
Output : Sum = 1235
Product = 1234

Input : arr[] = {5, 3, 6, 8, 4, 1, 2, 9}
Output : Sum = 10
Product = 9```

Take two variables min and max to store the minimum and maximum elements of the array. Find the minimum and the maximum element and store them in these variables respectively. Finally, print the sum and product of the minimum and maximum elements.

Below is the program to illustrate above approach:

## C++

 `// CPP program to find the sum  and product``// of minimum and maximum element in an array` `#include ``using` `namespace` `std;` `// Function to find minimum element``int` `getMin(``int` `arr[], ``int` `n)``{``    ``int` `res = arr[0];``    ``for` `(``int` `i = 1; i < n; i++)``        ``res = min(res, arr[i]);``    ``return` `res;``}` `// Function to find maximum element``int` `getMax(``int` `arr[], ``int` `n)``{``    ``int` `res = arr[0];``    ``for` `(``int` `i = 1; i < n; i++)``        ``res = max(res, arr[i]);``    ``return` `res;``}` `// Function to get Sum``int` `findSum(``int` `arr[], ``int` `n)``{``    ``int` `min = getMin(arr, n);``    ``int` `max = getMax(arr, n);` `    ``return` `min + max;``}` `// Function to get product``int` `findProduct(``int` `arr[], ``int` `n)``{``    ``int` `min = getMin(arr, n);``    ``int` `max = getMax(arr, n);` `    ``return` `min * max;``}` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 12, 1234, 45, 67, 1 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``// Sum of min and max element``    ``cout << ``"Sum = "` `<< findSum(arr, n) << endl;` `    ``// Product of min and max element``    ``cout << ``"Product = "` `<< findProduct(arr, n);` `    ``return` `0;``}`

## C

 `// C program to find the sum  and product``// of minimum and maximum element in an array``#include ` `int` `min(``int` `a,``int` `b)``{``  ``int` `min = a;``  ``if``(min > b)``    ``min = b;``  ``return` `min;``}` `int` `max(``int` `a,``int` `b)``{``  ``int` `max = a;``  ``if``(max < b)``    ``max = b;``  ``return` `max;``}` `// Function to find minimum element``int` `getMin(``int` `arr[], ``int` `n)``{``  ``int` `res = arr[0];``  ``for` `(``int` `i = 1; i < n; i++)``    ``res = min(res, arr[i]);``  ``return` `res;``}` `// Function to find maximum element``int` `getMax(``int` `arr[], ``int` `n)``{``  ``int` `res = arr[0];``  ``for` `(``int` `i = 1; i < n; i++)``    ``res = max(res, arr[i]);``  ``return` `res;``}` `// Function to get Sum``int` `findSum(``int` `arr[], ``int` `n)``{``  ``int` `min = getMin(arr, n);``  ``int` `max = getMax(arr, n);` `  ``return` `min + max;``}` `// Function to get product``int` `findProduct(``int` `arr[], ``int` `n)``{``  ``int` `min = getMin(arr, n);``  ``int` `max = getMax(arr, n);` `  ``return` `min * max;``}` `// Driver Code``int` `main()``{``  ``int` `arr[] = { 12, 1234, 45, 67, 1 };``  ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);` `  ``// Sum of min and max element``  ``printf``(``"Sum = %d\n"``,findSum(arr, n));` `  ``// Product of min and max element``  ``printf``(``"Product = %d\n"``,findProduct(arr, n));` `  ``return` `0;``}` `// This code is contributed by kothavvsaakash.`

## Java

 `// Java  program to find the sum and product``// of minimum and maximum element in an array` `import` `java.io.*;` `class` `GFG {``    ` `    ``// Function to find minimum element``static` `int` `getMin(``int` `arr[], ``int` `n)``{``    ``int` `res = arr[``0``];``    ``for` `(``int` `i = ``1``; i < n; i++)``        ``res = Math.min(res, arr[i]);``    ``return` `res;``}` `// Function to find maximum element``static` `int` `getMax(``int` `arr[], ``int` `n)``{``    ``int` `res = arr[``0``];``    ``for` `(``int` `i = ``1``; i < n; i++)``        ``res = Math.max(res, arr[i]);``    ``return` `res;``}` `// Function to get Sum``static` `int` `findSum(``int` `arr[], ``int` `n)``{``    ``int` `min = getMin(arr, n);``    ``int` `max = getMax(arr, n);` `    ``return` `min + max;``}` `// Function to get product``static` `int` `findProduct(``int` `arr[], ``int` `n)``{``    ``int` `min = getMin(arr, n);``    ``int` `max = getMax(arr, n);` `    ``return` `min * max;``}` `// Driver Code``    ` `    ``public` `static` `void` `main (String[] args) {``    ``int` `arr[] = { ``12``, ``1234``, ``45``, ``67``, ``1` `};``    ``int` `n = arr.length;` `    ``// Sum of min and max element``        ``System.out.println (``"Sum = "` `+ findSum(arr, n));` `    ``// Product of min and max element``        ``System.out.println( ``"Product = "` `+ findProduct(arr, n));` `        ` `        ` `    ``}``}``//This Code is contributed by anuj_67....`

## Python 3

 `# Python 3 program to find the sum and product``# of minimum and maximum element in an array` `# Function to find minimum element``def` `getMin(arr, n):``    ``res ``=` `arr[``0``]``    ``for` `i ``in` `range``(``1``, n):``        ``res ``=` `min``(res, arr[i])``    ``return` `res` `# Function to find maximum element``def` `getMax(arr, n):``    ``res ``=` `arr[``0``]``    ``for` `i ``in` `range``(``1``, n):``        ``res ``=` `max``(res, arr[i])``    ``return` `res` `# Function to get Sum``def` `findSum(arr, n):``    ``min` `=` `getMin(arr, n)``    ``max` `=` `getMax(arr, n)` `    ``return` `min` `+` `max` `# Function to get product``def` `findProduct(arr, n):``    ``min` `=` `getMin(arr, n)``    ``max` `=` `getMax(arr, n)` `    ``return` `min` `*` `max` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ` `    ``arr ``=` `[ ``12``, ``1234``, ``45``, ``67``, ``1` `]``    ``n ``=` `len``(arr)` `    ``# Sum of min and max element``    ``print``(``"Sum = "` `, findSum(arr, n))` `    ``# Product of min and max element``    ``print``(``"Product = "` `, findProduct(arr, n))` `# This code is contributed``# by ChitraNayal`

## C#

 `// C# program to find the sum and product``// of minimum and maximum element in an array``using` `System;` `class` `GFG {``    ` `// Function to find minimum element``static` `int` `getMin(``int` `[]arr, ``int` `n)``{``    ``int` `res = arr[0];``    ``for` `(``int` `i = 1; i < n; i++)``        ``res = Math.Min(res, arr[i]);``    ``return` `res;``}` `// Function to find maximum element``static` `int` `getMax(``int` `[]arr, ``int` `n)``{``    ``int` `res = arr[0];``    ``for` `(``int` `i = 1; i < n; i++)``        ``res = Math.Max(res, arr[i]);``    ``return` `res;``}` `// Function to get Sum``static` `int` `findSum(``int` `[]arr, ``int` `n)``{``    ``int` `min = getMin(arr, n);``    ``int` `max = getMax(arr, n);` `    ``return` `min + max;``}` `// Function to get product``static` `int` `findProduct(``int` `[]arr, ``int` `n)``{``    ``int` `min = getMin(arr, n);``    ``int` `max = getMax(arr, n);` `    ``return` `min * max;``}` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``int` `[]arr = { 12, 1234, 45, 67, 1 };``        ``int` `n = arr.Length;``    ` `        ``// Sum of min and max element``        ``Console.WriteLine(``"Sum = "` `+ findSum(arr, n));` `        ``// Product of min and max element``        ``Console.WriteLine( ``"Product = "` `+ findProduct(arr, n));``    ``}``}` `// This Code is contributed by anuj_67....`

## PHP

 `

## Javascript

 ``

Output

```Sum = 1235
Product = 1234```

Optimizations

We can use a single loop to find both maximum and minimum. This would require only one traversal of array.

Another Solution In C++, there are direct function to find maximum and minimum : max_element() and min_element()

## C++14

 `// CPP program to find the sum  and product``// of minimum and maximum element in an array` `#include ``using` `namespace` `std;``// Driver Code``int` `main()``{``    ``int` `arr[] = { 12, 1234, 45, 67, 1 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``int` `*i1, *i2;``    ``// Find the maximum Element``    ``i1 = std::max_element(arr, arr + n);``    ``// Find the minimum Element``    ``i2 = std::min_element(arr, arr + n);``    ``// Sum of min and max element``    ``cout << ``"Sum = "` `<< *i1 + *i2 << endl;``    ``// Product of min and max element``    ``cout << ``"Product = "` `<< (*i1) * (*i2);` `    ``return` `0;``}`

## Java

 `/*package whatever //do not write package name here */``import` `java.util.*;` `class` `GFG {``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int``[] arr = { ``12``, ``1234``, ``45``, ``67``, ``1` `};``        ``int` `max = Integer.MIN_VALUE;``        ``int` `min = Integer.MAX_VALUE;``        ``for` `(``int` `a : arr) {``            ``if` `(a > max) {``                ``max = a;``            ``}``            ``if` `(a < min) {``                ``min = a;``            ``}``        ``}``        ``System.out.println(``"Sum = "` `+ (max + min));``        ``System.out.println(``"Product = "` `+ (max * min));``    ``}``}` `// This code is contributed by akashish__`

## Python3

 `# Python3 implementation of the above approach``arr ``=` `[``12``, ``1234``, ``45``, ``67``, ``1``]``max` `=` `max``(arr)``min` `=` `min``(arr)``print``(``"Sum = "` `+` `str``(``max` `+` `min``))``print``(``"Product = "` `+` `str``(``max` `*` `min``))` `# This code is contributed by akashish__`

## C#

 `using` `System;` `public` `class` `GFG {``    ``static` `public` `void` `Main()``    ``{``        ``int``[] arr = { 12, 1234, 45, 67, 1 };``        ``int` `max = ``int``.MinValue;``        ``int` `min = ``int``.MaxValue;``        ``for` `(``int` `i = 0; i < arr.Length; i++) {``            ``int` `a = arr[i];``            ``if` `(a > max) {``                ``max = a;``            ``}``            ``if` `(a < min) {``                ``min = a;``            ``}``        ``}``        ``Console.WriteLine(``"Sum = "` `+ (max + min));``        ``Console.WriteLine(``"Product = "` `+ (max * min));``    ``}``}` `// This code is contributed by akashish__`

## Javascript

 `// JavaScript implementation of the above approach``const arr = [12, 1234, 45, 67, 1];``const max = Math.max(...arr);``const min = Math.min(...arr);``console.log(``"Sum = "` `+ (max + min));``console.log(``"Product = "` `+ (max * min));` `// This code is contributed by akashish__`

Output

```Sum = 1235
Product = 1234```

Another Solution: Using STL

An alternate solution can be using the sort() to find the minimum and maximum number in the array, which we can then use to find the sum and product.

## C++

 `#include ``using` `namespace` `std;` `// Function to get sum``int` `findSum(``int` `minEle, ``int` `maxEle)``{``    ``return` `minEle + maxEle;``}` `// Function to get product``int` `findProduct(``int` `minEle, ``int` `maxEle)``{``    ``return` `minEle * maxEle;``}` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 12, 1234, 45, 67, 1 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``  ` `    ``// sorting the array``    ``sort(arr, arr+n);`` ` `    ``// min element would be the element at 0th index``    ``//of array after sorting``    ``int` `minEle = arr[0];``    ` `    ``// max element would be the element at (n-1)th index``    ``// of array after sorting``    ``int` `maxEle = arr[n-1];``    ` `    ``cout << ``"Sum = "` `<< findSum(minEle, maxEle) << endl;``    ``cout << ``"Product = "` `<< findProduct(minEle, maxEle);`` ` `    ``return` `0;``}`

## Java

 `// Java program for the above approach``import` `java.io.*;``import` `java.util.Arrays;``class` `GFG {` `// Function to get sum``static` `int` `findSum(``int` `minEle, ``int` `maxEle)``{``    ``return` `minEle + maxEle;``}` `// Function to get product``static` `int` `findProduct(``int` `minEle, ``int` `maxEle)``{``    ``return` `minEle * maxEle;``}` `// Driver code``public` `static` `void` `main (String[] args)``{``    ``int``[] arr = { ``12``, ``1234``, ``45``, ``67``, ``1` `};``    ``int` `n = arr.length;``  ` `    ``// sorting the array``    ``Arrays.sort(arr);`` ` `    ``// min element would be the element at 0th index``    ``//of array after sorting``    ``int` `minEle = arr[``0``];``    ` `    ``// max element would be the element at (n-1)th index``    ``// of array after sorting``    ``int` `maxEle = arr[n-``1``];``    ` `    ``System.out.println(``"Sum = "` `+ findSum(minEle, maxEle));``    ``System.out.println(``"Product = "` `+ findProduct(minEle, maxEle));``}``}` `// This code is contributed by shivanisinghss2110`

## C#

 `// C# program for the above approach``using` `System;``class` `GFG {` `// Function to get sum``static` `int` `findSum(``int` `minEle, ``int` `maxEle)``{``    ``return` `minEle + maxEle;``}` `// Function to get product``static` `int` `findProduct(``int` `minEle, ``int` `maxEle)``{``    ``return` `minEle * maxEle;``}` `// Driver code``public` `static` `void` `Main()``{``    ``int``[] arr = { 12, 1234, 45, 67, 1 };``    ``int` `n = arr.Length;``  ` `    ``// sorting the array``    ``Array.Sort(arr);`` ` `    ``// min element would be the element at 0th index``    ``//of array after sorting``    ``int` `minEle = arr[0];``    ` `    ``// max element would be the element at (n-1)th index``    ``// of array after sorting``    ``int` `maxEle = arr[n-1];``    ` `    ``Console.WriteLine(``"Sum = "` `+ findSum(minEle, maxEle));``    ``Console.WriteLine(``"Product = "` `+ findProduct(minEle, maxEle));``}``}` `// This code is contributed by target_2.`

## Python3

 `class` `GFG :``    ``# Function to get sum``    ``@staticmethod``    ``def`  `findSum( minEle,  maxEle) :``        ``return` `minEle ``+` `maxEle``      ` `    ``# Function to get product``    ``@staticmethod``    ``def`  `findProduct( minEle,  maxEle) :``        ``return` `minEle ``*` `maxEle``      ` `    ``# Driver code``    ``@staticmethod``    ``def` `main( args) :``        ``arr ``=` `[``12``, ``1234``, ``45``, ``67``, ``1``]``        ``n ``=` `len``(arr)``        ` `        ``# sorting the array``        ``arr.sort()``        ` `        ``# min element would be the element at 0th index``        ``# of array after sorting``        ``minEle ``=` `arr[``0``]``        ` `        ``# max element would be the element at (n-1)th index``        ``# of array after sorting``        ``maxEle ``=` `arr[n ``-` `1``]``        ``print``(``"Sum = "` `+` `str``(GFG.findSum(minEle, maxEle)))``        ``print``(``"Product = "` `+` `str``(GFG.findProduct(minEle, maxEle)))``    ` `if` `__name__``=``=``"__main__"``:``    ``GFG.main([])``    ` `    ``# This code is contributed by aadityaburujwale.`

## Javascript

 `    ``// Function to get sum``    ``function` `findSum(minEle, maxEle)``    ``{``        ``return` `minEle + maxEle;``    ``}``    ` `    ``// Function to get product``    ``function` `findProduct(minEle, maxEle)``    ``{``        ``return` `minEle * maxEle;``    ``}` `        ``var` `arr = [12, 1234, 45, 67, 1];``        ``var` `n = arr.length;``        ` `        ``// sorting the array``        ``arr.sort(``function``(a, b) {``return` `a - b;});``        ` `        ``// min element would be the element at 0th index``        ``// of array after sorting``        ``var` `minEle = arr[0];``        ` `        ``// max element would be the element at (n-1)th index``        ``// of array after sorting``        ``var` `maxEle = arr[n - 1];``        ``console.log(``"Sum = "` `+ findSum(minEle, maxEle));``        ``console.log(``"Product = "` `+ findProduct(minEle, maxEle));` `// This code is contributed by sourabhdalal0001.`

Output

```Sum = 1235
Product = 1234```

My Personal Notes arrow_drop_up