Open In App

Program to find remainder when large number is divided by 11

Last Updated : 11 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a number n, the task is to find the remainder when n is divided by 11. The input of number may be very large.

Examples: 

Input : str = 13589234356546756
Output : 6

Input : str = 3435346456547566345436457867978
Output : 4

Since the given number can be very large, we can not use n % 11. There are some steps that needs to be used to find remainder:  

1. Store number in string.
2. Count length of number string.
3. Convert string character one by one 
into digit and check if it's less than
11. Then continue for next character 
otherwise take remainder and use 
remainder for next number.
4. We get remainder.

Ex. str = "1345"
    len = 4
    rem = 3

Implementation:

C++




// CPP implementation to find remainder
// when a large number is divided by 11
#include <bits/stdc++.h>
using namespace std;
 
// Function to return remainder
int remainder(string str)
{
    // len is variable to store the
    // length of number string.
    int len = str.length();
 
    int num, rem = 0;
 
    // loop that find remainder
    for (int i = 0; i < len; i++) {
        num = rem * 10 + (str[i] - '0');
        rem = num % 11;
    }
 
    return rem;
}
 
// Driver code
int main()
{
    string str = "3435346456547566345436457867978";
    cout << remainder(str);
    return 0;
}


Java




// JAVA implementation to find remainder
// when a large number is divided by 11
import java.io.*;
 
class GFG{
     
    // Function to return remainder
    static int remainder(String str)
    {
        // len is variable to store the
        // length of number string.
        int len = str.length();
      
        int num, rem = 0;
      
        // loop that find remainder
        for (int i = 0; i < len; i++) {
            num = rem * 10 + (str.charAt(i) - '0');
            rem = num % 11;
        }
      
        return rem;
    }
      
    // Driver code
    public static void main(String args[])
    {
        String str = "3435346456547566345436457867978";
        System.out.println(remainder(str));
    }
}
 
/*This code is contributed by Nikita Tiwari.*/


Python3




# Python 3 implementation to find remainder
# when a large number is divided by 11
 
# Function to return remainder
def remainder(st) :
     
    # len is variable to store the
    # length of number string.
    ln = len(st)
     
    rem = 0
     
    # loop that find remainder
    for i in range(0, ln) :
        num = rem * 10 + (int)(st[i])
        rem = num % 11
         
    return rem
     
     
# Driver code
st = "3435346456547566345436457867978"
print(remainder(st))
 
 
# This code is contributed by Nikita Tiwari.


C#




// C# implementation to find remainder
// when a large number is divided by 11
using System;
 
class GFG
{
     
    // Function to return remainder
    static int remainder(string str)
    {
         
        // len is variable to store the
        // length of number string.
        int len = str.Length;
     
        int num, rem = 0;
     
        // loop that find remainder
        for (int i = 0; i < len; i++)
        {
            num = rem * 10 + (str[i] - '0');
            rem = num % 11;
        }
     
        return rem;
    }
     
    // Driver code
    public static void Main()
    {
        string str = "3435346456547566345436457867978";
        Console.WriteLine(remainder(str));
    }
}
 
// This code is contributed by vt_m.


PHP




<?php
// PHP implementation to find remainder
// when a large number is divided by 11
 
// Function to return remainder
function remainder($str)
{
     
    // len is variable to store the
    // length of number string.
    $len = strlen($str);
 
    $num; $rem = 0;
 
    // loop that find remainder
    for ($i = 0; $i < $len; $i++)
    {
        $num = $rem * 10 +
               ($str[$i] - '0');
        $rem = $num % 11;
    }
 
    return $rem;
}
 
// Driver code
$str = "3435346456547566345436457867978";
echo(remainder($str));
 
// This code is contributed by Ajit.
?>


Javascript




<script>
// Javascript implementation to find remainder
// when a large number is divided by 11
 
// Function to return remainder
function remainder(str)
{
     
    // len is variable to store the
    // length of number string.
    let len = str.length;
 
    let num;
    let rem = 0;
 
    // loop that find remainder
    for (let i = 0; i < len; i++)
    {
        num = rem * 10 +
               (str[i] - '0');
        rem = num % 11;
    }
 
    return rem;
}
 
// Driver code
let str = "3435346456547566345436457867978";
document.write(remainder(str));
 
// This code is contributed by _saurabh_jaiswal.
</script>


Output

4

Time Complexity: O(L ) where L is length of the string
Auxiliary Space: O(L )

Another Approach:

To find the remainder when a large number is divided by 11, we can use the following rule:

  • Starting from the rightmost digit, we alternate between adding and subtracting the digits. That is, we add the rightmost digit, subtract the next digit to the left, add the next digit, and so on.
  • If the result is divisible by 11, the original number is also divisible by 11, and the remainder is 0.
  • Otherwise, the remainder is the absolute value of the result modulo 11.

C++




#include<bits/stdc++.h>
using namespace std;
 
int remainder(string str)
{
    int n = str.length();
    int sum = 0;
    for (int i = n-1; i >= 0; i--) {
        int digit = str[i] - '0';
        if ((n-i) % 2 == 0) {
            sum = (sum - digit + 11) % 11;
        } else {
            sum = (sum + digit) % 11;
        }
    }
    return sum;
}
 
int main()
{
    string str = "3435346456547566345436457867978";
    cout << remainder(str);
    return 0;
}


Java




import java.util.*;
 
public class Main
{
    public static int remainder(String str)
    {
        int n = str.length();
        int sum = 0;
        for (int i = n - 1; i >= 0; i--)
        {
            int digit = str.charAt(i) - '0';
            if ((n - i) % 2 == 0)
            {
                sum = (sum - digit + 11) % 11;
            }
            else
            {
                sum = (sum + digit) % 11;
            }
        }
        return sum;
    }
 
    public static void main(String[] args)
    {
        String str = "3435346456547566345436457867978";
        System.out.println(remainder(str));
    }
}


Python3




def remainder(str):
    n = len(str)
    sum = 0
    for i in range(n-1, -1, -1):
        digit = int(str[i])
        if (n-i) % 2 == 0:
            sum = (sum - digit + 11) % 11
        else:
            sum = (sum + digit) % 11
    return sum
 
str = "3435346456547566345436457867978"
print(remainder(str))


C#




using System;
 
class Program
{
    static int Remainder(string str)
    {
        int n = str.Length;
        int sum = 0;
        for (int i = n - 1; i >= 0; i--)
        {
            int digit = str[i] - '0';
            if ((n - i) % 2 == 0)
            {
                sum = (sum - digit + 11) % 11;
            }
            else
            {
                sum = (sum + digit) % 11;
            }
        }
        return sum;
    }
 
    static void Main(string[] args)
    {
        string str = "3435346456547566345436457867978";
        Console.WriteLine(Remainder(str));
    }
}


Javascript




// Javascript code to calculate remainder using
// the divisibility rule of 11
function remainder(str) {
    let n = str.length;
    let sum = 0;
    for (let i = n - 1; i >= 0; i--) {
        let digit = parseInt(str[i], 10);
        if ((n - i) % 2 === 0) {
            sum = (sum - digit + 11) % 11;
        }
        else {
            sum = (sum + digit) % 11;
        }
    }
    return sum;
}
 
// Driver code
let str = "3435346456547566345436457867978";
console.log(remainder(str));


Output

4

Time Complexity: O(n)
Auxiliary Space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads