VOOZH about

URL: https://www.geeksforgeeks.org/dsa/check-large-number-divisible-11-not/

⇱ Check if a large number is divisible by 11 or not - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Check if a large number is divisible by 11 or not

Last Updated : 19 Jun, 2025

Given a number in the form of string s, Check if the number is divisible by 11 or not. The input number may be large and it may not be possible to store it even if we use long long int.

Examples: 

Input: s = "76945"
Output: true
Explanation: s when divided by 11 gives 0 as remainder.

Input: s = "7695"
Output: false
Explanation: s does not give 0 as remainder when divided by 11.

Input: s = "1234567589333892"
Output: true
Explanation: s when divided by 11 gives 0 as remainder.

[Naive Approach]: Modulo Division Method

Checking given number is divisible by 11 or not by using the modulo division operator "%".
Note: This approach may not work in some programming languages for very large input strings, due to limitations such as integer overflow or memory constraints..


Output
true

Time Complexity: O(n), where n is length of s.
Auxiliary Space: O(1)

[Expected Approach] - Even-Odd Digit Sum for Large String Input

Since input number may be very large, we cannot use n % 11 to check if a number is divisible by 11 or not. The idea is based on following fact.
A number is divisible by 11 if difference of following two is divisible by 11. 

  1. Sum of digits at odd places.
  2. Sum of digits at even places.

Illustration:

For example, let us consider 795
Sum of digits at odd places : 7 + 9 + 5, Sum of digits at even places : 6 + 4
Difference of two sums = 21 - 10 = 11. Since difference is divisible by 11, the number 76945 is divisible by 11.

How does this work?

Let us consider 7694, we can write it as: 7694 = 7*1000 + 6*100 + 9*10 + 4
The proof is based on below observation:

  • Remainder of 10i divided by 11 = 1 if i is even
  • Remainder of 10i divided by 11 = 10 ≡ -1 if i is odd

So the powers of 10 only result in values either 1 or -1. Remainder of "7*1000 + 6*100 + 9*10 + 4" divided by 11 can be written as :
7*(-1) + 6*1 + 9*(-1) + 4*1
The above expression is basically difference between sum of even digits and odd digits.


Output
true

Time Complexity: O(n), where n is length of s.
Auxiliary Space: O(1)

Comment