Program to find remainder when large number is divided by r
Given a number N, the task is to find the remainder when N is divided by R (a two-digit Number). The input of the Number may be very large.
Examples:
Input: N = 13589234356546756, R = 13
Output: 11
Input: N = 3435346456547566345436457867978, R = 17
Output: 13
- Get the digit of N one by one from left to right.
- For each digit, combine with next digit if its less than R.
- If the combination at any point reaches above R, take and store the Remainder.
- Repeat the above steps for all digits from left to right.
Below is the program that implements the above approach:
C
#include <stdio.h>
#include <string.h>
int Remainder( char str[], int R)
{
int len = strlen (str);
int Num, Rem = 0;
for ( int i = 0; i < len; i++) {
Num = Rem * 10 + (str[i] - '0' );
Rem = Num % R;
}
return Rem;
}
int main()
{
char str[] = "13589234356546756" ;
int R = 13;
printf ( "%d" ,Remainder(str, R));
return 0;
}
|
C++
#include <bits/stdc++.h>
using namespace std;
int Remainder(string str, int R)
{
int len = str.length();
int Num, Rem = 0;
for ( int i = 0; i < len; i++) {
Num = Rem * 10 + (str[i] - '0' );
Rem = Num % R;
}
return Rem;
}
int main()
{
string str = "13589234356546756" ;
int R = 13;
cout << Remainder(str, R);
return 0;
}
|
Java
class GFG
{
static int Remainder(String str, int R)
{
int len = str.length();
int Num, Rem = 0 ;
for ( int i = 0 ; i < len; i++) {
Num = Rem * 10 + (str.charAt(i) - '0' );
Rem = Num % R;
}
return Rem;
}
public static void main( String [] args)
{
String str = "13589234356546756" ;
int R = 13 ;
System.out.println(Remainder(str, R));
}
}
|
Python 3
def Remainder( str , R):
l = len ( str )
Rem = 0
for i in range (l):
Num = Rem * 10 + ( ord ( str [i]) -
ord ( '0' ))
Rem = Num % R
return Rem
if __name__ = = "__main__" :
str = "13589234356546756"
R = 13
print (Remainder( str , R))
|
Javascript
<script>
function Remainder(str, R)
{
var len = str.length;
var Num, Rem = 0;
for ( var i = 0; i < len; i++) {
Num = Rem * 10 + (str[i] - '0' );
Rem = Num % R;
}
return Rem;
}
var str = "13589234356546756" ;
var R = 13;
document.write(Remainder(str, R));
</script>
|
C#
using System;
class GFG
{
static int Remainder(String str,
int R)
{
int len = str.Length;
int Num, Rem = 0;
for ( int i = 0; i < len; i++)
{
Num = Rem * 10 + (str[i] - '0' );
Rem = Num % R;
}
return Rem;
}
public static void Main()
{
String str = "13589234356546756" ;
int R = 13;
Console.WriteLine(Remainder(str, R));
}
}
|
PHP
<?php
function Remainder( $str , $R )
{
$len = strlen ( $str );
$Num = 0; $Rem = 0;
for ( $i = 0; $i < $len ; $i ++)
{
$Num = $Rem * 10 + ( $str [ $i ] - '0' );
$Rem = $Num % $R ;
}
return $Rem ;
}
$str = "13589234356546756" ;
$R = 13;
echo Remainder( $str , $R );
|
Complexity Analysis:
- Time Complexity: O(L) where L is the length of the string
- Auxiliary Space: O(1), since no extra space has been taken.
Another approach:
Approach
1. Define the large number as a string.
2. Define the value of r.
3. Initialize the remainder to 0.
4. Iterate over each digit of the number using a loop.
5. Convert the current digit from a character to an integer.
6. Update the remainder by applying the modulo operator to the digit and the current remainder.
7. Print the final remainder.
C++
#include <iostream>
int main()
{
std::string number
= "123456789123456789123456789123456789123456789" ;
int r = 7;
int remainder = 0;
for ( int i = 0; i < number.length(); i++) {
int digit = number[i] - '0' ;
remainder = (remainder * 10 + digit) % r;
}
std::cout << "The remainder when " << number
<< " is divided by " << r << " is "
<< remainder << "." << std::endl;
return 0;
}
|
C
#include <stdio.h>
int main() {
char number[] = "123456789123456789123456789123456789123456789" ;
int r = 7;
int remainder = 0;
for ( int i = 0; number[i] != '\0' ; i++) {
int digit = number[i] - '0' ;
remainder = (remainder * 10 + digit) % r;
}
printf ( "The remainder when %s is divided by %d is %d.\n" , number, r, remainder);
return 0;
}
|
Python3
number = "123456789123456789123456789123456789123456789"
r = 7
remainder = 0
for i in range ( len (number)):
digit = int (number[i])
remainder = (remainder * 10 + digit) % r
print (f "The remainder when {number} is divided by {r} is {remainder}." )
|
Javascript
let number = "123456789123456789123456789123456789123456789" ;
let r = 7;
let remainder = 0;
for (let i = 0; i < number.length; i++) {
let digit = parseInt(number.charAt(i));
remainder = (remainder * 10 + digit) % r;
}
console.log(`The remainder when ${number} is divided by ${r} is ${remainder}.`);
|
Java
import java.math.BigInteger;
public class Main {
public static void main(String[] args)
{
String number
= "123456789123456789123456789123456789123456789" ;
int r = 7 ;
BigInteger bigNumber = new BigInteger(number);
BigInteger remainder
= bigNumber.remainder(BigInteger.valueOf(r));
System.out.println( "The remainder when " + number
+ " is divided by " + r + " is "
+ remainder + "." );
}
}
|
C#
using System;
class Program
{
static void Main()
{
string number = "123456789123456789123456789123456789123456789" ;
int r = 7;
int remainder = 0;
for ( int i = 0; i < number.Length; i++)
{
int digit = number[i] - '0' ;
remainder = (remainder * 10 + digit) % r;
}
Console.WriteLine( "The remainder when {0} is divided by {1} is {2}." , number, r, remainder);
}
}
|
Output
The remainder when 123456789123456789123456789123456789123456789 is divided by 7 is 1.
Time complexity: O(n), where n is the number of digits in the large number.
Auxiliary Space: O(1), as we are only storing a few integers and a string of digits.
Last Updated :
06 Apr, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...