How to compute mod of a big number?
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++
// C++ program to compute mod of a big number represented // as string #include <iostream> using namespace std; // Function to compute num (mod a) int mod(string num, int a) { // Initialize result int res = 0; // One by one process all digits of 'num' for ( int i = 0; i < num.length(); i++) res = (res * 10 + ( int )num[i] - '0' ) % a; return res; } // Driver program int main() { string num = "12316767678678" ; cout << mod(num, 10); return 0; } |
Java
// Java program to compute mod of a big // number represented as string import java.io.*; class GFG { // Function to compute num (mod a) static int mod(String num, int a) { // Initialize result int res = 0 ; // One by one process all digits of 'num' for ( int i = 0 ; i < num.length(); i++) res = (res * 10 + ( int )num.charAt(i) - '0' ) % a; return res; } // Driver program public static void main(String[] args) { String num = "12316767678678" ; System.out.println(mod(num, 10 )); } } // This code is contributed by vt_m. |
Python3
# program to compute mod of a big number # represented as string # Function to compute num (mod a) def mod(num, a): # Initialize result res = 0 # One by one process all digits # of 'num' for i in range ( 0 , len (num)): res = (res * 10 + int (num[i])) % a return res # Driver program num = "12316767678678" print (mod(num, 10 )) # This code is contributed by Sam007 |
C#
// C# program to compute mod of a big // number represented as string using System; public class GFG { // Function to compute num (mod a) static int mod(String num, int a) { // Initialize result int res = 0; // One by one process all // digits of 'num' for ( int i = 0; i < num.Length; i++) res = (res * 10 + ( int )num[i] - '0' ) % a; return res; } // Driver code public static void Main() { String num = "12316767678678" ; Console.WriteLine(mod(num, 10)); } } // This code is contributed by Sam007 |
PHP
<?php // PHP program to compute mod // of a big number represented // as string // Function to compute num (mod a) function mod( $num , $a ) { // Initialize result $res = 0; // One by one process // all digits of 'num' for ( $i = 0; $i < $r = strlen ( $num ); $i ++) $res = ( $res * 10 + $num [ $i ] - '0' ) % $a ; return $res ; } // Driver Code $num = "12316767678678" ; echo mod( $num , 10); // This code is contributed by ajit ?> |
Javascript
<script> // Javascript program to compute mod // of a big number represented // as string // Function to compute num (mod a) function mod(num, a) { // Initialize result let res = 0; // One by one process // all digits of 'num' for (let i = 0; i < num.length; i++) res = (res * 10 + parseInt(num[i])) % a; return res; } // Driver Code let num = "12316767678678" ; document.write(mod(num, 10)); // This code is contributed by _saurabh_jaiswal </script> |
Output :
8
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
Please Login to comment...