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:
#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;
} |
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));
}
} |
# 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))
|
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));
}
} |
// 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)); |
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++ 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 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 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". |
<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# 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 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. ?> |
9
Time Complexity: O(len), where len is the size of the given array
Auxiliary Space: O(1)