Open In App

Find remainder of array multiplication divided by n

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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 <bits/stdc++.h>
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 <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);
}


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




<script>
    // Javascript 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)
    {
        let mul = 1;
   
        // find the individual remainder
        // and multiple with mul.
        for (let i = 0; i < len; i++)
            mul = (mul * (arr[i] % n)) % n;
       
        return mul % n;
    }
     
    let arr = [ 100, 10, 5, 25, 35, 14 ];
    let len = 6;
    let n = 11;
 
    // print the remainder of after
    // multiple all the numbers
    document.write(findremainder(arr, len, n));
 
// This code is contributed by rameshtravel07.
</script>


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




<?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.
?>


Output

9

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



Last Updated : 13 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads