![]() |
VOOZH | about |
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.
Table of Content
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..
true
Time Complexity: O(n), where n is length of s.
Auxiliary Space: O(1)
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.
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:
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.
true
Time Complexity: O(n), where n is length of s.
Auxiliary Space: O(1)