# Find remainder of array multiplication divided by n

Last Updated : 13 Apr, 2023

Given multiple numbers and a number n, the task is to print the remainder after multiply all the number divide by n.

Examples:

```Input : arr[] = {100, 10, 5, 25, 35, 14},
n = 11
Output : 9
100 x 10 x 5 x 25 x 35 x 14 = 61250000 % 11 = 9

Input : arr[] = {100, 10},
n = 5
Output : 0
100 x 10 = 1000 % 5 = 0```

Naive approach: First multiple all the number then take % by n then find the remainder, But in this approach if number is maximum of 2^64 then it give wrong answer.

Implementation of the above approach:

## C++

 `#include ` `using` `namespace` `std;`   `int` `findremainder(``int` `arr[], ``int` `len, ``int` `n)` `{` `    ``long` `long` `int` `product = 1;` `    ``for` `(``int` `i = 0; i < len; i++) {` `        ``product = product * arr[i];` `    ``}` `    ``return` `product % n;` `}`   `int` `main()` `{` `    ``int` `arr[] = { 100, 10, 5, 25, 35, 14 };` `    ``int` `len = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``int` `n = 11;` `    ``cout << findremainder(arr, len, n);` `    ``return` `0;` `}`

## Java

 `public` `class` `Main {` `    ``// This code finds the remainder of the product of all` `    ``// the elements in the array arr divided by 'n'.` `    ``public` `static` `int` `findRemainder(``int``[] arr, ``int` `len,` `                                    ``int` `n)` `    ``{` `        ``int` `product = ``1``;` `        ``for` `(``int` `i = ``0``; i < len; i++) {` `            ``product = product * arr[i];` `        ``}` `        ``return` `product % n;` `    ``}`   `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int``[] arr = { ``100``, ``10``, ``5``, ``25``, ``35``, ``14` `};` `        ``int` `len = arr.length;` `        ``int` `n = ``11``;` `        ``System.out.println(findRemainder(arr, len, n));` `    ``}` `}`

## Python3

 `# This code finds the remainder of the product of all the elements in the array arr divided by 'n'.` `def` `findremainder(arr, ``len``, n):` `    ``product ``=` `1` `    ``for` `i ``in` `range``(``len``):` `        ``product ``=` `product ``*` `arr[i]` `    ``return` `product ``%` `n`     `arr ``=` `[``100``, ``10``, ``5``, ``25``, ``35``, ``14``]` `len` `=` `len``(arr)` `n ``=` `11` `print``(findremainder(arr, ``len``, n))`

## C#

 `using` `System;` `// This code finds the remainder of the product of all` `// the elements in the array arr divided by 'n'.` `class` `Program` `{` `    ``static` `int` `findRemainder(``int``[] arr, ``int` `len, ``int` `n)` `    ``{` `        ``long` `product = 1;` `        ``for` `(``int` `i = 0; i < len; i++)` `        ``{` `            ``product *= arr[i];` `        ``}` `        ``return` `(``int``)(product % n);` `    ``}`   `    ``static` `void` `Main()` `    ``{` `        ``int``[] arr = { 100, 10, 5, 25, 35, 14 };` `        ``int` `len = arr.Length;` `        ``int` `n = 11;` `        ``Console.WriteLine(findRemainder(arr, len, n));` `    ``}` `}`

## Javascript

 `// Define a function to find the remainder ` `// of product of array elements divided by n` `function` `findRemainder(arr, len, n) {` `    ``let product = 1;` `    ``for` `(let i = 0; i < len; i++) {` `        ``product = product * arr[i];` `    ``}` `    ``return` `product % n;` `}`   `// Driver Code` `let arr = [100, 10, 5, 25, 35, 14];` `let len = arr.length;` `let n = 11;` `console.log(findRemainder(arr, len, n));`

Output

`9`

Time Complexity: O(n)

Space Complexity: O(1)

Approach that avoids overflow : First take a remainder or individual number like arr[i] % n. Then multiply the remainder with current result. After multiplication, again take remainder to avoid overflow. This works because of distributive properties of modular arithmetic. ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c

Implementation:

## C++

 `// C++ program to find ` `// remainder when all` `// array elements are` `// multiplied.` `#include ` `using` `namespace` `std;`   `// Find remainder of arr[0] * arr[1] * ` `// .. * arr[n-1]` `int` `findremainder(``int` `arr[], ``int` `len, ``int` `n)` `{` `    ``int` `mul = 1;`   `    ``// find the individual remainder` `    ``// and multiple with mul.` `    ``for` `(``int` `i = 0; i < len; i++) ` `        ``mul = (mul * (arr[i] % n)) % n;` `    `  `    ``return` `mul % n;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr[] = { 100, 10, 5, 25, 35, 14 };` `    ``int` `len = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``int` `n = 11;`   `    ``// print the remainder of after` `    ``// multiple all the numbers` `    ``cout << findremainder(arr, len, n);` `}`

## Java

 `// Java program to find ` `// remainder when all` `// array elements are` `// multiplied.` `import` `java.util.*;` `import` `java.lang.*;`   `public` `class` `GfG{` `    `  `    ``// Find remainder of arr[0] * arr[1] *` `    ``// .. * arr[n-1]` `    ``public` `static` `int` `findremainder(``int` `arr[], ` `                                   ``int` `len, ``int` `n)` `    ``{` `        ``int` `mul = ``1``;`   `        ``// find the individual remainder` `        ``// and multiple with mul.` `        ``for` `(``int` `i = ``0``; i < len; i++) ` `            ``mul = (mul * (arr[i] % n)) % n;` `    `  `        ``return` `mul % n;` `    ``}` `    `  `    ``// Driver function` `    ``public` `static` `void` `main(String argc[])` `    ``{` `        ``int``[] arr = ``new` `int` `[]{ ``100``, ``10``, ``5``,` `                                ``25``, ``35``, ``14` `};` `        ``int` `len = ``6``;` `        ``int` `n = ``11``;`   `        ``// print the remainder of after` `        ``// multiple all the numbers` `        ``System.out.println(findremainder(arr, len, n));` `    ``}` `}`   `/* This code is contributed by Sagar Shukla */`

## Python3

 `# Python3 program to` `# find remainder when` `# all array elements` `# are multiplied.`   `# Find remainder of arr[0] * arr[1]` `# * .. * arr[n-1]` `def` `findremainder(arr, lens, n):` `    ``mul ``=` `1`   `    ``# find the individual` `    ``# remainder and ` `    ``# multiple with mul.` `    ``for` `i ``in` `range``(lens): ` `        ``mul ``=` `(mul ``*` `(arr[i] ``%` `n)) ``%` `n` `    `  `    ``return` `mul ``%` `n`   `# Driven code` `arr ``=` `[ ``100``, ``10``, ``5``, ``25``, ``35``, ``14` `]` `lens ``=` `len``(arr)` `n ``=` `11`   `# print the remainder` `# of after multiple` `# all the numbers` `print``( findremainder(arr, lens, n))`   `# This code is contributed by "rishabh_jain".`

## Javascript

 ``

## C#

 `// C# program to find ` `// remainder when all` `// array elements are` `// multiplied.` `using` `System;`   `public` `class` `GfG{` `    `  `    ``// Find remainder of arr[0] * arr[1] *` `    ``// .. * arr[n-1]` `    ``public` `static` `int` `findremainder(``int` `[]arr, ` `                                ``int` `len, ``int` `n)` `    ``{` `        ``int` `mul = 1;`   `        ``// find the individual remainder` `        ``// and multiple with mul.` `        ``for` `(``int` `i = 0; i < len; i++) ` `            ``mul = (mul * (arr[i] % n)) % n;` `    `  `        ``return` `mul % n;` `    ``}` `    `  `    ``// Driver function` `    ``public` `static` `void` `Main()` `    ``{` `        ``int``[] arr = ``new` `int` `[]{ 100, 10, 5,` `                                ``25, 35, 14 };` `        ``int` `len = 6;` `        ``int` `n = 11;`   `        ``// print the remainder of after` `        ``// multiple all the numbers` `        ``Console.WriteLine(findremainder(arr, len, n));` `    ``}` `}`   `/* This code is contributed by vt_m */`

## PHP

 ``

Output

`9`

Time Complexity: O(len), where len is the size of the given array
Auxiliary Space: O(1)

Share your thoughts in the comments