Given a big number ‘num’ represented as string and an integer x, find value of “num % a” or “num mod a”. Output is expected as an integer.
Examples :
Input: num = "12316767678678", a = 10
Output: num (mod a) ≡ 8
The idea is to process all digits one by one and use the property that
xy (mod a) ≡ ((x (mod a) * 10) + (y (mod a))) mod a
where, x : left-most digit
y: rest of the digits except x.
for example:
625 % 5 = (((6 % 5)*10) + (25 % 5)) % 5 = 0
Below is the implementation.
Thanks to utkarsh111 for suggesting the below solution.
C++
#include <iostream>
using namespace std;
int mod(string num, int a)
{
int res = 0;
for ( int i = 0; i < num.length(); i++)
res = (res * 10 + num[i] - '0' ) % a;
return res;
}
int main()
{
string num = "12316767678678" ;
cout << mod(num, 10);
return 0;
}
|
Java
import java.io.*;
class GFG {
static int mod(String num, int a)
{
int res = 0 ;
for ( int i = 0 ; i < num.length(); i++)
res = (res * 10 + num.charAt(i) - '0' ) % a;
return res;
}
public static void main(String[] args)
{
String num = "12316767678678" ;
System.out.println(mod(num, 10 ));
}
}
|
Python3
def mod(num, a):
res = 0
for i in range ( 0 , len (num)):
res = (res * 10 + int (num[i])) % a
return res
num = "12316767678678"
print (mod(num, 10 ))
|
C#
using System;
public class GFG {
static int mod(String num, int a)
{
int res = 0;
for ( int i = 0; i < num.Length; i++)
res = (res * 10 + num[i] - '0' ) % a;
return res;
}
public static void Main()
{
String num = "12316767678678" ;
Console.WriteLine(mod(num, 10));
}
}
|
PHP
<?php
function mod( $num , $a )
{
$res = 0;
for ( $i = 0; $i < $r = strlen ( $num ); $i ++)
$res = ( $res * 10 +
$num [ $i ] - '0' ) % $a ;
return $res ;
}
$num = "12316767678678" ;
echo mod( $num , 10);
?>
|
Javascript
<script>
function mod(num, a)
{
let res = 0;
for (let i = 0; i < num.length; i++)
res = (res * 10 +
parseInt(num[i])) % a;
return res;
}
let num = "12316767678678" ;
document.write(mod(num, 10));
</script>
|
Time Complexity : O(|num|)
- Time complexity will become size of num string as we are traversing once in num.
Auxiliary Space: O(1)
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above