Find remainder of array multiplication divided by n

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.

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

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find 
// remainder when all
// array elements are
// multiplied.
#include <iostream>
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);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 */

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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".

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 */

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find 
// remainder when all
// array elements are
// multiplied.
  
// Find remainder of arr[0] * arr[1] * 
// .. * arr[n-1]
function findremainder($arr, $len, $n)
{
    $mul = 1;
  
    // find the individual remainder
    // and multiple with mul.
    for ($i = 0; $i < $len; $i++) 
        $mul = ($mul * ($arr[$i] % $n)) % $n;
      
    return $mul % $n;
}
  
// Driver code
$arr = array(100, 10, 5, 25, 35, 14);
$len = sizeof($arr);
$n = 11;
  
// print the remainder of after
// multiple all the numbers
echo(findremainder($arr, $len, $n));
  
// This code is contributed by Ajit.
?>

chevron_right



Output:

9


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : jit_t, Akanksha_Rai