How to compute mod of a big number? (original) (raw)
Last Updated : 10 Apr, 2023
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 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 + 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 + 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 resDriver 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 + 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
JavaScript
`
Time Complexity : O(|num|)
- Time complexity will become size of num string as we are traversing once in num.
Auxiliary Space: O(1)