How to compute mod of a big number?

Given a big number ‘num’ represented as string and an integer x, find value of “num % x” or “num mod x”. 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) * y) (mod a)). Below is the implementation.

Thanks to utkarsh111 for suggesting the below solution.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right



Output :

8

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Improved By : Sam007, jit_t