Find last k digits in product of an array numbers
Last Updated :
01 Aug, 2022
Given a array size of n, find the last k digits (1 <= k < 10) of product of array numbers
Examples:
Input : a[] = {22, 31, 44, 27, 37, 43}
Output : 56
Input : a[] = {24, 7, 144, 77, 29, 19}
Output : 84
A simple solution is to multiply all numbers, then find last k digits of product. This solution may lead overflow as the array product may be high. A better solution is to multiply array elements under modulo of 10k
Implementation:
C++
#include <bits/stdc++.h>
using namespace std;
int lastKDigits( int a[], int n, int k)
{
int num = ( int ) pow (10, k);
int mul = a[0] % num;
for ( int i = 1; i < n; i++) {
a[i] = a[i] % num;
mul = (a[i] * mul) % num;
}
return mul;
}
int main()
{
int a[] = { 22, 31, 44, 27, 37, 43 };
int k = 2;
int n = sizeof (a) / sizeof (a[0]);
cout << lastKDigits(a, n, k);
return 0;
}
|
Java
import java.io.*;
import java.math.*;
class GFG {
static int lastKDigits( int a[], int n, int k)
{
int num = ( int )(Math.pow( 10 , k));
int mul = a[ 0 ] % num;
for ( int i = 1 ; i < n; i++) {
a[i] = a[i] % num;
mul = (a[i] * mul) % num;
}
return mul;
}
public static void main(String args[])
{
int a[] = { 22 , 31 , 44 , 27 , 37 , 43 };
int k = 2 ;
int n = a.length;
System.out.println(lastKDigits(a, n, k));
}
}
|
Python3
import math
def lastKDigits(a, n, k) :
num = ( int )(math. pow ( 10 , k))
mul = a[ 0 ] % num
for i in range ( 1 ,n) :
a[i] = a[i] % num
mul = (a[i] * mul) % num
return mul
a = [ 22 , 31 , 44 , 27 , 37 , 43 ]
k = 2
n = len (a)
print (lastKDigits(a, n, k))
|
C#
using System;
class GFG {
static int lastKDigits( int []a, int n, int k)
{
int num = ( int )(Math.Pow(10, k));
int mul = a[0] % num;
for ( int i = 1; i < n; i++) {
a[i] = a[i] % num;
mul = (a[i] * mul) % num;
}
return mul;
}
public static void Main()
{
int []a = { 22, 31, 44, 27, 37, 43 };
int k = 2;
int n = a.Length;
Console.WriteLine(lastKDigits(a, n, k));
}
}
|
PHP
<?php
function lastKDigits( $a , $n , $k )
{
$num = (int)pow(10, $k );
$mul = $a [0] % $num ;
for ( $i = 1; $i < $n ; $i ++)
{
$a [ $i ] = $a [ $i ] % $num ;
$mul = ( $a [ $i ] * $mul ) % $num ;
}
return $mul ;
}
$a = array ( 22, 31, 44, 27, 37, 43 );
$k = 2;
$n = sizeof( $a );
echo (lastKDigits( $a , $n , $k ));
?>
|
Javascript
<script>
function lastKDigits(a, n, k)
{
let num = (Math.pow(10, k));
let mul = a[0] % num;
for (let i = 1; i < n; i++)
{
a[i] = a[i] % num;
mul = (a[i] * mul) % num;
}
return mul;
}
let a = [ 22, 31, 44, 27, 37, 43 ];
let k = 2;
let n = a.length;
document.write(lastKDigits(a, n, k));
</script>
|
Time Complexity : O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...